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(); }
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); }