/// <summary> /// Выполнение. /// </summary> private void Implementation() { //создаём сиплекс-таблицу simplextable = new SimplexTable(number_of_basix, number_of_free_variables, variable_visualization, elements, target_function_elements, false); MainGrid.Children.Add(simplextable); //добавляем тильду simplextable.AddTilde(); if (simplextable.ResponseCheck() == 1) { labelsteps.Content = "Холостой шаг: Метод искусственного базиса. Выбор опорного элемента."; //холостой шаг simplextable.IdleStep(); this.Width = 720; } else { labelsteps.Content = "Шаг " + step + ": Метод искусственного базиса. Выбор опорного элемента."; //выбор опорного simplextable.SelectionOfTheSupportElement(); this.Width = 651; } }
private void Implementation() { //создаём сиплекс-таблицу simplextable = new SimplexTable(number_of_basix, number_of_free_variables, variable_visualization, elements, target_function_elements, false); MainGrid.Children.Add(simplextable); //добавляем тильду simplextable.AddTilde(); while (simplextable.ArtificialResponseCheck() != true) { if (simplextable.ResponseCheck() == 1) { //холостой шаг simplextable.RandomIdleStep(); this.Width = 720; //Смена местами визуализаций переменных(после выбора опорного элемента) + буферизация. simplextable.ChangeOfVisualizationVariables(); //вычисление согласно выбранному опорному элементу simplextable.CalculateSimplexTable(); //обновление данных сиплекс-таблицы simplextable.UpdateSimplexTableValues(); simplextable.CornerPoint(step); } else { //выбор опорного simplextable.SelectionRandomSupportElement(); this.Width = 651; //Смена местами визуализаций переменных(после выбора опорного элемента) + буферизация. simplextable.ChangeOfVisualizationVariables(); //вычисление согласно выбранному опорному элементу simplextable.CalculateSimplexTable(); //обновление данных сиплекс-таблицы simplextable.UpdateSimplexTableValues(); simplextable.CornerPoint(step); } } variable_visualization = simplextable.ReturnVariableVisualization(); elements = simplextable.ReturnElements(); elements.RemoveAt(elements.Count - 1); //организация массива для симплекс-метода List <List <double> > temp_elements = new List <List <double> >(); for (int i = 0; i < number_of_basix; i++) { temp_elements.Add(new List <double>()); for (int j = 0; j < number_of_basix; j++) { if (temp_elements[i].Count == i) { temp_elements[i].Add(1); } else { temp_elements[i].Add(0); } } } for (int i = 0; i < number_of_basix; i++) { temp_elements[i].AddRange(elements[i]); } elements = temp_elements; simplextable.HideSimplexTable(); simplextable1 = new SimplexTable(number_of_basix, variable_visualization.Length - number_of_basix, variable_visualization, elements, target_function_elements, true); MainGrid.Children.Add(simplextable1); step = 0; while (simplextable1.ResponseCheck() != 1 && simplextable1.ResponseCheck() != -1) { //выбор опорного simplextable1.SelectionRandomSupportElement(); //Смена местами визуализаций переменных(после выбора опорного элемента) + буферизация. simplextable1.ChangeOfVisualizationVariables(); //вычисление согласно выбранному опорному элементу simplextable1.CalculateSimplexTable(); //обновление данных сиплекс-таблицы simplextable1.UpdateSimplexTableValues(); } if (simplextable1.ResponseCheck() == 1) { if (MinMax == 0) { labelanswer.Content = "Ответ :" + simplextable1.Response() * (-1); } else { labelanswer.Content = "Ответ :" + simplextable1.Response(); } //добавляем точку corner_dot = simplextable1.ResponseCornerDot(step); MainGrid.Children.Add(corner_dot); buttonToMainWindow.Visibility = Visibility.Visible; } else { labelanswer.Content = "Задача не разрешима!"; buttonToMainWindow.Visibility = Visibility.Visible; } step++; }