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(); } }
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); } } } }
/// <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 } }; }
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; }
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; }
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); } } } }
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); }
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); } } } } }
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); }
/// <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] }); } }
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--; } } } } }
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); } }
/// <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)); }
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(); }
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; } } }