Linear Programming in IronPython QuickStart Sample
Illustrates solving linear programming (LP) problems using classes in the Numerics.NET.Optimization.LinearProgramming namespace in IronPython.
View this sample in: C# Visual Basic F#
```Python import numerics # The linear programming classes reside in a namespace with # other optimization-related classes. from Extreme.Mathematics.Optimization import * # Vectors and matrices are in the Extreme.Mathematics.LinearAlgebra # namespace from Extreme.Mathematics import * # Illustrates solving linear programming problems # using the classes in the Extreme.Mathematics.Optimization # namespace of Numerics.NET. # This QuickStart Sample illustrates the three ways to create a Linear Program. # The first is in terms of matrices. The coefficients # are supplied as a matrix. The cost vector, right-hand side # and constraints on the variables are supplied as a vector. # The cost vector: c = Vector([ -1.0, -3.0, 0.0, 0.0, 0.0, 0.0 ]) # The coefficients of the constraints: A = Matrix([[1,1,1,0,0,0], [1,1,0,-1,0,0], [1,0,0,0,1,0], [0,1,0,0,0,1 ]]) # The right-hand sides of the constraints: b = Vector([ 1.5, 0.5, 1.0, 1.0]) # We're now ready to call the constructor. # The last parameter specifies the number of equality # constraints. lp1 = LinearProgram(c, A, b, 4) # Now we can call the Solve method to run the Revised # Simplex algorithm: x = lp1.Solve() # The GetDualSolution method returns the dual solution: y = lp1.GetDualSolution() print "Primal: {0:.1f}".format(x) print "Dual: {0:.1f}".format(y) # The optimal value is returned by the Extremum property: print "Optimal value: {0:.1f}".format(lp1.OptimalValue) # The second way to create a Linear Program is by constructing # it by hand. We start with an 'empty' linear program. lp2 = LinearProgram() # Next, we add two variables: we specify the name, the cost, # and optionally the lower and upper bound. lp2.AddVariable("X1", -1.0, 0, 1) lp2.AddVariable("X2", -3.0, 0, 1) # Next, we add constraints. Constraints also have a name. # We also specify the coefficients of the variables, # the lower bound and the upper bound. lp2.AddLinearConstraint("C1", Vector.Create(1.0, 1.0), 0.5, 1.5) # If a constraint is a simple equality or inequality constraint, # you can supply a LinearProgramConstraintType value and the # right-hand side of the constraint. # We can now solve the linear program: x = lp2.Solve() y = lp2.GetDualSolution() print "Primal: {0:.1f}".format(x) print "Dual: {0:.1f}".format(y) print "Optimal value: {0:.1f}".format(lp2.OptimalValue) # Finally, we can create a linear program from an MPS file. # The MPS format is a standard format. lp3 = MpsReader.Read(r"..\data\sample.mps") # We can go straight to solving the linear program: x = lp3.Solve() y = lp3.GetDualSolution() print "Primal: {0:.1f}".format(x) print "Dual: {0:.1f}".format(y) print "Optimal value: {0:.1f}".format(lp3.OptimalValue) ```