示例#1
0
 public void Solve()
 {
     for (int i = 0; i < constraintCount; i++)
     {
         double[] variables = new double[variablesCount];
         variables = DataTransfer(dtVariables[i]);
         double b    = dtB[i];
         string sign = dtSign[i];
         constraints[i] = new Constraint(variables, b, sign);
     }
     double[] functionVariables = DataTransfer(dtFunctionVariables);
     function = new Function(functionVariables, 0, isMax);
     simplex  = new SimplexMethod.Simplex(function, constraints);
     result   = simplex.GetResult();
 }
示例#2
0
        void Proceed()
        {
            Constraint[] constraints = new Constraint[constraintsCount];
            for (int i = 0; i < constraintsCount; i++)
            {
                double[] variables = new double[variablesCount];
                double   b         = Convert.ToDouble(constraintsGridView.Rows[i].Cells[variablesCount + 1].Value);
                string   sign      = Convert.ToString(constraintsGridView.Rows[i].Cells[variablesCount].Value);
                for (int j = 0; j < variablesCount; j++)
                {
                    variables[j] = Convert.ToDouble(constraintsGridView.Rows[i].Cells[j].Value);
                }
                constraints[i] = new Constraint(variables, b, sign);
            }
            double[] functionVariables = new double[variablesCount];
            for (int i = 0; i < variablesCount; i++)
            {
                functionVariables[i] = Convert.ToDouble(functionGridView.Rows[0].Cells[i].Value);
            }
            double c = Convert.ToDouble(functionGridView.Rows[0].Cells[variablesCount].Value);

            bool isExtrMax = extrComboBox.SelectedIndex == 0;

            Function function = new Function(functionVariables, c, isExtrMax);

            Simplex simplex = new Simplex(function, constraints);

            Tuple <List <SimplexSnap>, SimplexResult> result = simplex.GetResult();

            switch (result.Item2)
            {
            case SimplexResult.Found:
                string extrStr = isExtrMax ? "max" : "min";
                resultsLbl.Text = "The optimal solution is found: F" + extrStr + $" = {result.Item1.Last().fValue}";
                break;

            case SimplexResult.Unbounded:
                resultsLbl.Text = "The domain of admissible solutions is unbounded";
                break;

            case SimplexResult.NotYetFound:
                resultsLbl.Text = "Algorithm has made 100 cycles and hasn't found any optimal solution.";
                break;
            }

            ShowResultsGrid(result.Item1);
        }