/// <summary> /// Выполнение. /// </summary> private void Implementation() { //Прямой ход метода Гаусса для приведения к треугольному виду. MatrixTransformation.Gauss(elements, CornerDot, variable_visualization); //Выражение базисных переменных. MatrixTransformation.HoistingMatrix(elements, number_of_basix); //создаём сиплекс-таблицу simplextable = new SimplexTable(number_of_basix, number_of_free_variables, variable_visualization, elements, target_function_elements, true); MainGrid.Children.Add(simplextable); int responce; int step = 1; while (true) { if ((responce = simplextable.ResponseCheck()) == 0) { //выбор любого опорного simplextable.SelectionRandomSupportElement(); //смена визуализации переменных в симплек-таблице simplextable.ChangeOfVisualWithoutBuffer(); //вычисление согласно выбранному опорному элементу simplextable.CalculateSimplexTable(); //обновление данных сиплекс-таблицы simplextable.UpdateSimplexTableValues(); //номер угловой точки simplextable.CornerPoint(step); step++; } else if (responce == 1) { if (MinMax == 0) { labelanswer.Content = "Ответ :" + simplextable.Response() * (-1); } else { labelanswer.Content = "Ответ :" + simplextable.Response(); } //добавляем точку corner_dot = simplextable.ResponseCornerDot(step - 1); MainGrid.Children.Add(corner_dot); buttonToMainWindow.Visibility = Visibility.Visible; break; } else if (responce == -1) { labelanswer.Content = "Задача не разрешима!"; buttonToMainWindow.Visibility = Visibility.Visible; break; } } }