Beispiel #1
0
        // симлекс метод
        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;
                }
            }
        }
Beispiel #2
0
        //// для метода иск. баз.
        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 = "Нет подходящего опорного элемента. Найден цикл";
                    }
                }
            }
        }