**29.2****
****Solving LP Problems** (.NET, C#, CSharp, VB, Visual Basic, F#)

Class **PrimalSimplexSolver**
solves linear programming problems using the primal simplex method. **DualSimplexSolver**
uses the dual simplex method. The simplex method solves LP problems by
constructing an initial solution at a vertex of a simplex, then walking
along edges of the simplex to vertices with successively higher values
of the objective function until the optimum is reached.

The Solve() method takes
a **LinearProgrammingProblem** or **MixedIntegerLinearProgrammingProblem**
and, optionally, a solver parameter object.

Code Example – C# linear programming

var solver = new PrimalSimplexSolver(); solver.Solve( problem );

This code demonstrates using a solver parameter object.

Code Example – C# linear programming

var solverParams = new DualSimplexSolverParams { // Use steepest edge pivoting Costing = DualSimplexCosting.SteepestEdge, // Do not perform more than 1000 pivots MaxPivotCount = 1000, // Minimize, rather than maximize, the objective function Minimize = true }; var solver = new DualSimplexSolver(); solver.Solve( problem, solverParams );

It is important to check whether a finite solution was found, since your problem may be unbounded or infeasible. If a finite solution was found, you can access the solution using the OptimalX property. The OptimalObjectiveFunctionValue property gets the value of the objective function evaluated at the solution.

Code Example – C# linear programming

if ( solver.Result == PrimalSimplexSolver.SolveResult.Optimal ) { Console.WriteLine( solver.OptimalX ); Console.WriteLine( solver.OptimalObjectiveFunctionValue ); }

If the solver result is SolverResult.UnexpectedException, you can use the ExceptionMessage property to get the exception message.