private void InitializeInputParametersTable()
        {
            using (var cmd = Connection.CreateCommand())
            {
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "select ID from InputParams";
                var reader = cmd.ExecuteReader();
                if (reader.HasRows)
                {
                    return;
                }
            }
            var inputParams = TrainData.nameParameter.Values.Where(o => o.StartsWith("OPC"));

            RemoveAllFromTable("InputParams");
            using (var cmd = Connection.CreateCommand())
            {
                cmd.CommandType = CommandType.Text;
                StringBuilder insertCommand = new StringBuilder("Insert into InputParams (ID, InternalName, RussianName, EnglishName) VALUES ");
                int           counter       = 0;
                foreach (var inputParam in inputParams)
                {
                    insertCommand.Append(
                        $"(@ID{counter}, @InternalName{counter}, @RussianName{counter}, @EnglishName{counter}), ");
                    cmd.Parameters.AddWithValue($"ID{counter}", counter);
                    cmd.Parameters.AddWithValue($"InternalName{counter}", inputParam);
                    cmd.Parameters.AddWithValue($"RussianName{counter}", XMLWork.FindNameWithScada(inputParam, "ru-RU"));
                    cmd.Parameters.AddWithValue($"EnglishName{counter}", XMLWork.FindNameWithScada(inputParam, "en-US"));
                    counter++;
                }
                insertCommand.Remove(insertCommand.Length - 2, 2);
                cmd.CommandText = insertCommand.ToString();
                var i = cmd.ExecuteNonQuery();
            }
        }
Beispiel #2
0
        private void Shortest_Tree(TreeNode test_tree, List <IndexVertex> vertex, int index)
        {
            int numberTrue  = 0;
            int numberFalse = 0;

            if (test_tree.attribute.values != null)
            {
                for (int i = 0; i < test_tree.attribute.values.Count; i++)
                {
                    TreeNode childNode = test_tree.getChildByBranchName(test_tree.attribute.values[i]);

                    if (childNode.attributeName == "False")
                    {
                        numberFalse++;
                    }
                    else if (childNode.attributeName == "True")
                    {
                        numberTrue++;
                    }
                    else
                    {
                        vertex.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language) + "\n" + childNode.Positive + "|" + childNode.Negative, index, test_tree.attribute.values[i], Brushes.DarkRed));
                        int number = vertex.Count;
                        Shortest_Tree(childNode, vertex, number - 1);
                    }
                    if ((numberTrue <= 1) && (numberFalse <= 1))
                    {
                        vertex.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language) + "\n" + childNode.Positive + "|" + childNode.Negative, index, test_tree.attribute.values[i], Brushes.DeepPink));
                        int number = vertex.Count;
                        Shortest_Tree(childNode, vertex, number - 1);
                    }
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Ctor for linear regression model
        /// </summary>
        public RegressionModelEquation(string modelName, double[] coefficients, double rmse, double minX, double maxX, double minY, double maxY, string nameX, string nameY, bool normalizeValues)
        {
            IsLinearRegression = true;
            Name             = modelName;
            CreationDate     = DateTime.Now;
            NormalizeValues  = normalizeValues;
            _outputParameter = new ModelParameter
            {
                Id          = XMLWork.FindIDWithName(nameY, Properties.Settings.Default.Languages),
                Coefficient = 1,
                LowerBound  = minY,
                UpperBound  = maxY
            };
            _RMSE            = rmse;
            _inputParameters = new List <ModelParameter>
            {
                new ModelParameter
                {
                    Id          = null,
                    Coefficient = coefficients[0],
                    LowerBound  = null,
                    UpperBound  = null
                },

                new ModelParameter
                {
                    Id          = XMLWork.FindIDWithName(nameX, Properties.Settings.Default.Languages),
                    Coefficient = coefficients[1],
                    LowerBound  = minX,
                    UpperBound  = maxX
                }
            };
        }
Beispiel #4
0
 public void GetMultipleRegressionModelInfo(out double[] coefficients, out string qualityParameterName, out string[] inputParameterNames, out string rmse, out bool normalizeValues)
 {
     coefficients         = _inputParameters.Select(item => item.Coefficient).ToArray();
     qualityParameterName =
         XMLWork.FindNameWithID(_outputParameter.Id.Value, Properties.Settings.Default.Languages);
     inputParameterNames = _inputParameters
                           .Select(item => XMLWork.FindNameWithID(item.Id.Value, Properties.Settings.Default.Languages)).ToArray();
     rmse            = RMSEString;
     normalizeValues = NormalizeValues;
 }
Beispiel #5
0
 public void GetLinearRegressionModelInfo(out string modelText, out string xAxisTitle, out string yAxisTitle, out double[] coefficients, out double minX, out double maxX, out string rmse, out bool normalizeValues)
 {
     modelText =
         $"{XMLWork.FindNameWithID(_outputParameter.Id.Value, Properties.Settings.Default.Languages)} = {Math.Round(_inputParameters[0].Coefficient, EquationSignificantDigitsCount)} {(_inputParameters[1].Coefficient < 0 ? "-" : "+")} {Math.Abs(Math.Round(_inputParameters[1].Coefficient, EquationSignificantDigitsCount))} · {XMLWork.FindNameWithID(_inputParameters[1].Id.Value, Properties.Settings.Default.Languages)}";
     coefficients    = new[] { _inputParameters[0].Coefficient, _inputParameters[1].Coefficient };
     xAxisTitle      = XMLWork.FindNameWithID(_inputParameters[1].Id.Value, Properties.Settings.Default.Languages);
     yAxisTitle      = XMLWork.FindNameWithID(_outputParameter.Id.Value, Properties.Settings.Default.Languages);
     minX            = _inputParameters[1].LowerBound.Value;
     maxX            = _inputParameters[1].UpperBound.Value;
     rmse            = RMSEString;
     normalizeValues = NormalizeValues;
 }
Beispiel #6
0
 private void PrintNode_group(DM.DecisionTree.TreeNode test_tree, List <IndexVertex> vertex, int index, string groupParamName)
 {
     if (test_tree.attribute.values != null)
     {
         for (int i = 0; i < test_tree.attribute.values.Count; i++)
         {
             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.DarkOrange));
                 int number = vertex.Count;
                 PrintNode_group(childNode, vertex, number - 1, groupParamName);
             }
         }
     }
 }
Beispiel #7
0
        private void Analyse(string errorNumber, string reason, string parameter)
        {
            int parameterID = XMLWork.FindID(parameter);

            if (parameterID == 0)
            {
                analyseListBox.Items.Add(Localisation.GetInstance().Language.Equals("RU") ? "По данной ошибке нет параметра." : "There is no parameter for this error.");
            }
            else
            {
                foreach (OneRow row in TrainData.Train)
                {
                    // TODO: Propose Misha to do public static collection with main optimal parametrs of line
                    // Use normal params, and non magic
                    if (parameter.Equals("OPC_ABZ12_XT_K02"))
                    {
                        if (!(row.Input[66] > 60m && row.Input[66] < 80m))
                        {
                            analyseListBox.Items.Add(Localisation.GetInstance().Language.Equals("RU") ? "====> Ошибка!" : "====> Error!");
                            //findingErrorsDataGridView.Rows.Add(new String[] { errorNumber, reason, parameter, row.Date.TimeOfDay.ToString() });
                            return;
                        }
                    }
                    else if (parameter.Equals("OPC_ABZ36_XT_K02"))
                    {
                        if (!(row.Input[69] > 70m && row.Input[69] < 90m))
                        {
                            analyseListBox.Items.Add(Localisation.GetInstance().Language.Equals("RU") ? "====> Ошибка!" : "====> Error!");
                            //findingErrorsDataGridView.Rows.Add(new String[] { errorNumber, reason, parameter, row.Date.TimeOfDay.ToString() });
                            return;
                        }
                    }
                    else
                    {
                        if (!(row.Input[parameterID] > 10.0m && row.Input[parameterID] < 40.0m))
                        {
                            analyseListBox.Items.Add(Localisation.GetInstance().Language.Equals("RU") ? "====> Ошибка!" : "====> Error!");
                            //findingErrorsDataGridView.Rows.Add(new String[] { errorNumber, reason, parameter, row.Date.TimeOfDay.ToString()});
                            return;
                        }
                    }
                }
            }
            analyseListBox.Items.Add(Localisation.GetInstance().Language.Equals("RU") ? "Ошибки не обнаружено" : "No errors found");
            analyseListBox.Items.Add("");
        }
        private void ShowRegressionModel()
        {
            if (_currentIndex < 0 || _currentIndex >= _regressionModels.Count)
            {
                return;
            }
            var currentModel = _regressionModels[_currentIndex];

            labelRegressionModelId.Text           = currentModel.Id.HasValue ? currentModel.Id.Value.ToString() : string.Empty;
            labelRegressionModelCreationDate.Text = currentModel.CreationDate.ToString("yy-MMM-dd ddd");
            labelRegressionModelName.Text         = currentModel.Name;
            labelOutputParameterName.Text         = XMLWork.FindNameWithID(currentModel.OutputParameter.Id.Value,
                                                                           Properties.Settings.Default.Languages);
            labelCalculatedRMSEValue.Text = currentModel.RMSEString;
            labelNormalizeValues.Text     = currentModel.NormalizeValues ? "Yes" : "No";
            CreateInputParametersTable(currentModel);
            CheckButtonsEnabled(_currentIndex);
        }
Beispiel #9
0
        private void Shortest_TreeGroup(TreeNode test_tree, List <IndexVertex> vertex, int index, string groupParamName)
        {
            int numberTrue  = 0;
            int numberFalse = 0;

            if (test_tree.attribute.values != null)
            {
                for (int i = 0; i < test_tree.attribute.values.Count; i++)
                {
                    TreeNode childNode = test_tree.getChildByBranchName(test_tree.attribute.values[i]);
                    if (childNode.attributeName != groupParamName)
                    {
                        if (childNode.attributeName == "False")
                        {
                            numberFalse++;
                        }
                        else if (childNode.attributeName == "True")
                        {
                            numberTrue++;
                        }
                        else
                        {
                            vertex.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language) + "\n" + childNode.Positive + "|" + childNode.Negative, index, test_tree.attribute.values[i], Brushes.Gold));
                            int number = vertex.Count;
                            Shortest_TreeGroup(childNode, vertex, number - 1, groupParamName);
                        }
                        if ((numberTrue == 1) && (childNode.attributeName == "True"))
                        {
                            vertex.Add(new IndexVertex(childNode.attributeName + "\n" + childNode.Positive + "|" + childNode.Negative, index, test_tree.attribute.values[i], Brushes.Goldenrod));
                            int number = vertex.Count;
                            Shortest_TreeGroup(childNode, vertex, number - 1, groupParamName);
                        }
                        else if ((numberFalse == 1) && (childNode.attributeName == "False"))
                        {
                            vertex.Add(new IndexVertex(childNode.attributeName + "\n" + childNode.Positive + "|" + childNode.Negative, index, test_tree.attribute.values[i], Brushes.Lime));
                            int number = vertex.Count;
                            Shortest_TreeGroup(childNode, vertex, number - 1, groupParamName);
                        }
                    }
                }
            }
        }
Beispiel #10
0
        private void Transfer()
        {
            if (!IsFilledMainParams())
            {
                return;
            }
            _progBarViewModel = new ProgBarViewModel {
                ActionName = "Подготовка опросного листа для 1С..."
            };
            _progBarViewModel.ShowBar();
            _mainBlockViewModel.BaseDrawElements.Remove(_mainBlockViewModel.MyBMZ);
            _mainBlockViewModel.BaseDrawElements.Add(_mainBlockViewModel.MyBMZ);
            XMLWork transferer = new XMLWork(_mainBlockViewModel);
            var     stream     = Save(_mainBlockViewModel.BaseDrawElements);
            var     stream2    = Save(_mainBlockViewModel.ListOwnNeed);
            var     byterat    = Convert.ToBase64String(stream.ToArray());
            var     byterat2   = Convert.ToBase64String(stream2.ToArray());

            transferer.CreateXml(AppData.LineArgs.To, byterat, byterat2, _mainParamsViewModel, dictColorElem);
            _progBarViewModel.CloseBar();
            Application.Current.Shutdown();
        }
        private void CreateInputParametersTable(RegressionModelEquation model)
        {
            DataTable table = new DataTable();

            table.Columns.Add("ParamId", typeof(string));
            table.Columns.Add("ParamName", typeof(string));
            table.Columns.Add("ParamCoefficient", typeof(double));
            table.Columns.Add("ParamUpperBound", typeof(string));
            table.Columns.Add("ParamLowerBound", typeof(string));

            foreach (var parameter in model.InputParameters)
            {
                table.Rows.Add(parameter.Id.HasValue ? parameter.Id.Value.ToString() : string.Empty,
                               parameter.Id.HasValue
                        ? XMLWork.FindNameWithID(parameter.Id.Value, Properties.Settings.Default.Languages)
                        : "free term", Math.Round(parameter.Coefficient, EquationSignificantDigitsCount),
                               parameter.UpperBound.HasValue ? Math.Round(parameter.UpperBound.Value, EquationSignificantDigitsCount).ToString() : string.Empty,
                               parameter.LowerBound.HasValue ? Math.Round(parameter.LowerBound.Value, EquationSignificantDigitsCount).ToString() : string.Empty);
            }

            dataGridViewInputParametersInfo.DataSource = table;
        }
        public void AddRegressionModel(RegressionModelEquation equation, string anotherName = null, DateTime?anotherDate = null)
        {
            string insertModelCommand =
                "Insert into RegressionModels (OutputParamId, CreationDate, Name, rmse, NormalizeValues) VALUES (@OutputParamId, @CreationDate, @Name, @rmse, @NormalizeValues)";
            Dictionary <string, object> parameters = new Dictionary <string, object>
            {
                { "OutputParamId", _outputParametersId[XMLWork.FindScadaNameWithID(equation.OutputParameter.Id.Value)] },
                { "CreationDate", anotherDate.HasValue ? anotherDate.Value.ToOADate() : equation.CreationDate.ToOADate() },
                { "Name", anotherName ?? equation.Name },
                { "rmse", equation.RMSE },
                { "NormalizeValues", equation.NormalizeValues ? 1 : 0 }
            };
            int           modelId             = InsertCommand(insertModelCommand, parameters);
            StringBuilder insertParamsCommand = new StringBuilder(
                "Insert into RegressionModelParameters (ParamId, ModelId, Coefficient, UpperBound, LowerBound) VALUES ");
            Dictionary <string, object> insertParamsParameters = new Dictionary <string, object>();

            for (int i = 0; i < equation.InputParameters.Count; i++)
            {
                insertParamsCommand.Append(
                    $"(@ParamId{i}, @ModelId{i}, @Coefficient{i}, @UpperBound{i}, @LowerBound{i}), ");
                if (equation.InputParameters[i].Id.HasValue)
                {
                    insertParamsParameters.Add($"ParamId{i}",
                                               _inputParametersId[XMLWork.FindScadaNameWithID(equation.InputParameters[i].Id.Value)]);
                }
                else
                {
                    insertParamsParameters.Add($"ParamId{i}", null);
                }
                insertParamsParameters.Add($"ModelId{i}", modelId);
                insertParamsParameters.Add($"Coefficient{i}", equation.InputParameters[i].Coefficient);
                insertParamsParameters.Add($"UpperBound{i}", equation.InputParameters[i].UpperBound);
                insertParamsParameters.Add($"LowerBound{i}", equation.InputParameters[i].LowerBound);
            }
            insertParamsCommand.Remove(insertParamsCommand.Length - 2, 2);
            InsertCommand(insertParamsCommand.ToString(), insertParamsParameters);
        }
Beispiel #13
0
        /// <summary>
        /// Ctor for multiple regression model
        /// </summary>
        public RegressionModelEquation(string modelName, string outputParamName, List <string> inputParamNames, double rmse, double[] equationCoefficients,
                                       string[] equationParametersNames, double[] equationParametersLowerBounds, double[] equationParametersUpperBounds, bool normalizeValues)
        {
            IsLinearRegression = false;
            Name             = modelName;
            CreationDate     = DateTime.Now;
            NormalizeValues  = normalizeValues;
            _outputParameter = new ModelParameter
            {
                Id          = XMLWork.FindIDWithName(outputParamName, Properties.Settings.Default.Languages),
                Coefficient = 1,
                LowerBound  = null,
                UpperBound  = null
            };

            _RMSE            = rmse;
            _inputParameters = new List <ModelParameter>
            {
                new ModelParameter
                {
                    Id          = null,
                    Coefficient = equationCoefficients[0],
                    LowerBound  = null,
                    UpperBound  = null
                }
            };
            for (int i = 1; i < equationCoefficients.Length; i++)
            {
                _inputParameters.Add(new ModelParameter
                {
                    Id          = XMLWork.FindIDWithName(equationParametersNames[i - 1], Properties.Settings.Default.Languages),
                    Coefficient = equationCoefficients[i],
                    LowerBound  = equationParametersLowerBounds[i - 1],
                    UpperBound  = equationParametersUpperBounds[i - 1]
                });
            }
        }
Beispiel #14
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 #15
0
    void Start()
    {
        _xmlWork = new XMLWork(ModelId);
        _check = new bool[16];
        Name = _xmlWork.Name;

        foreach (string model in Models)
        {
            if (!string.IsNullOrEmpty(model))
            {
                SetStartModel(model);
            }
        }

        Material material = Resources.Load("Auto") as Material;
        if (material != null)
        {
            material.color = new Color(material.color.r, material.color.g, material.color.b, Alpha);
        }
    }
Beispiel #16
0
    /// <summary>
    /// Возврат данных из файла
    /// </summary>
    /// <returns></returns>
    public string[] GetDateFromXMLFile()
    {
        XMLWork xml = new XMLWork(NumberLevel, assetWithDate);

        return(xml.LoadXML());
    }
        public RegressionModelEquation GetRegressionModelById(int id)
        {
            string getSql = "Select RegressionModels.Id, RegressionModels.OutputParamId, OutputParams.InternalName, RegressionModels.CreationDate, RegressionModels.Name, RegressionModels.rmse, RegressionModels.NormalizeValues from RegressionModels INNER JOIN OutputParams on OutputParams.ID = RegressionModels.OutputParamId where RegressionModels.Id = @Id";
            var    reader = GetCommand(getSql, new Dictionary <string, object> {
                { "Id", id }
            });
            int      modelId, outputParamId;
            DateTime creationDate;
            string   name;
            double   rmse;
            bool     normalizeValues;

            if (reader.Read())
            {
                modelId         = Convert.ToInt32(reader["Id"].ToString());
                outputParamId   = XMLWork.FindID(reader["InternalName"].ToString());
                creationDate    = DateTime.FromOADate(Convert.ToDouble(reader["CreationDate"].ToString()));
                name            = reader["Name"].ToString();
                rmse            = Convert.ToDouble(reader["rmse"].ToString());
                normalizeValues = Convert.ToInt32(reader["NormalizeValues"].ToString()) == 1;
                reader.Close();
            }
            else
            {
                return(null);
            }

            string getParamsSql =
                "Select ParamId, InternalName, Coefficient, UpperBound, LowerBound from RegressionModelParameters LEFT OUTER JOIN InputParams on InputParams.ID = RegressionModelParameters.ParamId where ModelId = @ModelId";
            var paramsReader = GetCommand(getParamsSql, new Dictionary <string, object> {
                { "ModelId", modelId }
            });
            List <RegressionModelEquation.ModelParameter> inputParameters = new List <RegressionModelEquation.ModelParameter>();

            if (paramsReader.HasRows)
            {
                while (paramsReader.Read())
                {
                    int?paramId;
                    if (paramsReader["InternalName"] is DBNull)
                    {
                        paramId = null;
                    }
                    else
                    {
                        paramId = XMLWork.FindID(paramsReader["InternalName"].ToString());
                    }
                    double coefficient = Convert.ToDouble(paramsReader["Coefficient"].ToString());
                    double?lowerBound, upperBound;
                    if (paramsReader["LowerBound"] is DBNull)
                    {
                        lowerBound = null;
                    }
                    else
                    {
                        lowerBound = Convert.ToDouble(paramsReader["LowerBound"].ToString());
                    }
                    if (paramsReader["UpperBound"] is DBNull)
                    {
                        upperBound = null;
                    }
                    else
                    {
                        upperBound = Convert.ToDouble(paramsReader["UpperBound"].ToString());
                    }
                    inputParameters.Add(new RegressionModelEquation.ModelParameter
                    {
                        Id = paramId, Coefficient = coefficient, LowerBound = lowerBound, UpperBound = upperBound
                    });
                }
            }
            else
            {
                return(null);
            }

            return(new RegressionModelEquation(modelId, name, creationDate, rmse, outputParamId, inputParameters, normalizeValues));
        }
Beispiel #18
0
        private void CalculateAndVisualiseShrinkage2()
        {
            DateTime      takeTimeBefore = TrainData.Train.OrderBy(o => o.Date).First().Date;
            DateTime      takeTimeAfter  = TrainData.Train.OrderByDescending(o => o.Date).First().Date;
            double        startOADate    = takeTimeBefore.ToOADate();
            double        endOADate      = takeTimeAfter.ToOADate();
            List <double> xs             = new List <double>();
            List <double> ys             = new List <double>();

            shrinkageControl1.plt.Clear();
            TimeSpan ts = new TimeSpan(ProductionTime.TakeOffTime);

            foreach (OneRow row in TrainData.Train)
            {
                DataSet AuthorsDataSet = new DataSet();
                try
                {
                    AuthorsDataSet.ReadXml(XMLWork.PathShrinkage);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
                if ((row.Date >= takeTimeBefore) && (row.Date <= takeTimeAfter))
                {
                    string shrinkageValues = XMLWork.FindShrinkageWithTimestamp(row.Date);
                    if (Properties.Settings.Default.Languages.Equals("en-US"))
                    {
                        xs.Add((row.Date - ts).ToOADate());
                        ys.Add(Convert.ToDouble(shrinkageValues));
                    }
                    else
                    {
                        xs.Add((row.Date - ts).ToOADate());
                        ys.Add(Convert.ToDouble(shrinkageValues.Replace(".", ",")));
                    }
                }
            }
            shrinkageControl1.plt.PlotScatter(xs.ToArray(), ys.ToArray(), markerShape: MarkerShape.none, lineWidth: 2, label: "Shrinkage value");
            #region Constant line
            shrinkageControl1.plt.PlotHLine(Convert.ToDouble(nominalValueShrinkage.Value) * (1 + 0.01 * Convert.ToDouble(upPercentShrinkage.Value)), lineWidth: 2, label: "Upper Limit");
            shrinkageControl1.plt.PlotHLine(Convert.ToDouble(nominalValueShrinkage.Value) * (1 - 0.01 * Convert.ToDouble(lowPercentShrinkage.Value)), lineWidth: 2, label: "Low Limit");
            #endregion

            Dictionary <int, string> neededSeries = new Dictionary <int, string>()
            {
                { 67, "Take-off rolls 1-2 - Speed" },
                { 70, "Take-off rolls 3-6 - Speed" },
                { 73, "Take-off rolls 7-10 - Speed" },
                { 66, "Take-off rolls 1-2 - Temperature" },
                { 69, "Take-off rolls 3-6 - Temperature" },
                { 72, "Take-off rolls 7-10 - Temperature" }
            };
            foreach (var series in neededSeries)
            {
                xs.Clear();
                ys.Clear();
                foreach (OneRow row in TrainData.Train)
                {
                    if ((row.Date >= takeTimeBefore) && (row.Date <= takeTimeAfter))
                    {
                        xs.Add(row.Date.ToOADate());
                        ys.Add(Convert.ToDouble(row.Input[series.Key]));
                    }
                }
                shrinkageControl1.plt.PlotScatter(xs.ToArray(), ys.ToArray(), markerShape: MarkerShape.none, lineWidth: 2, label: series.Value);
            }
            shrinkageControl1.plt.Ticks(dateTimeX: true);
            shrinkageControl1.plt.Legend(location: legendLocation.upperRight, shadowDirection: shadowDirection.none);
            shrinkageControl1.plt.AxisAuto();
            shrinkageControl1.plt.Axis(startOADate, endOADate);
            shrinkageControl1.Render();
        }
Beispiel #19
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;
            }
            }
        }