// симлекс метод private void autoButton2_Click(object sender, RoutedEventArgs e) { // очистить хвост списка int countMatrix = lpp.simplexMethod.Count - lpp.nowNumMatrixSM - 1; lpp.simplexMethod.RemoveRange(lpp.nowNumMatrixSM + 1, countMatrix); int column; int row; while (true) { MAB_SM.SelectSupportElem(lpp, out column, out row, "SM", lpp.simplexMethod[lpp.nowNumMatrixSM]); // рассчитать if (column > 0 && row > 0) { // проверка if (IsBottomStringPositive("SM", lpp.simplexMethod[lpp.nowNumMatrixSM]) || IsContainNegativeColumn("SM", lpp.simplexMethod[lpp.nowNumMatrixSM])) { // отобразить расчет Display.InitializeGrid_3_4(this, "SM", grid4, lpp.simplexMethod[lpp.nowNumMatrixSM]); break; } MAB_SM.Step(lpp, column, row, "SM", lpp.nowNumMatrixSM, lpp.simplexMethod); if (IsBottomStringPositive("SM", lpp.simplexMethod[lpp.nowNumMatrixSM]) || IsContainNegativeColumn("SM", lpp.simplexMethod[lpp.nowNumMatrixSM])) { // отобразить расчет Display.InitializeGrid_3_4(this, "SM", grid4, lpp.simplexMethod[lpp.nowNumMatrixSM]); break; } // отобразить расчет Display.InitializeGrid_3_4(this, "SM", grid4, lpp.simplexMethod[lpp.nowNumMatrixSM]); } else { if (message2.Content.Equals("")) { message2.Content = "Упс... См. autoButton2_Click"; } break; } } }
//// для метода иск. баз. private void autoButton_Click(object sender, RoutedEventArgs e) { // очистить хвост списка if (lpp.nowNumMatrixMAB % 2 != 0) { lpp.nowNumMatrixMAB++; } int countMatrix = lpp.methodOfArtificialBasis.Count - lpp.nowNumMatrixMAB - 1; lpp.methodOfArtificialBasis.RemoveRange(lpp.nowNumMatrixMAB + 1, countMatrix); int column; int row; // количество шагов int countStep = lpp.matrix2.GetLength(1) - (lpp.nowNumMatrixMAB / 2); for (int i = 0; i < countStep; i++) { // найти координаты опорного элемента MAB_SM.SelectSupportElem(lpp, out column, out row, "MAB", lpp.methodOfArtificialBasis[lpp.nowNumMatrixMAB]); // рассчитать if (column > 0 && row > 0) { MAB_SM.Step(lpp, column, row, "MAB", lpp.nowNumMatrixMAB, lpp.methodOfArtificialBasis); lpp.methodOfArtificialBasis[lpp.nowNumMatrixMAB][0, 0].Text = "№" + (lpp.nowNumMatrixMAB).ToString(); // проверка совместности системы IsBottomStringPositive("MAB", lpp.methodOfArtificialBasis[lpp.nowNumMatrixMAB]); // отобразить расчет Display.InitializeGrid_3_4(this, "MAB", grid3, lpp.methodOfArtificialBasis[lpp.nowNumMatrixMAB]); } else { if (message.Content.Equals("")) { message.Content = "Нет подходящего опорного элемента. Найден цикл"; } } } }