### Solve a linear problem with Python and Pulp

Pulp is a python library to solve linear problems. Linear problem can be written mathematically like

This is a complex example. In this article, you can learn Pulp with a very simple example.

### Installation of Pulp

The easiest way to install pulp is via PyPi.

If pip is available on your computer,

pip install pulp

If you want to install latest version of pulp from GitHub, use this.

pip install -U git+https://github.com/coin-or/pulp

### Linear system of equations

The system of equations that we are going to solve is

The answers are x = 2 and y = 3.

First, we are going to define the variables x and y. We use LpVariable() to define a variable for linear problem. “x” and “y” are the names of the variables. In order to see the value, use like x.value()

from pulp import * # LP Variables x = LpVariable("x", 0, 5) # variable x with 0 <= x <= 5 y = LpVariable("y", 0, 5) # variable x with 0 <= y <= 5

Next, we are going to define a “Linear Problem.” The problem is treated as minimization problem.

prob = LpProblem("myProblem", LpMinimize)

Now we are going to put some constraints to the problem.

# Constraints prob += x + y == 5 prob += 2*x - y == 1

Finally, to solve the problem,

# Solve status = prob.solve(PULP_CBC_CMD(msg=0))

Then, we can see the results as follows

# -3: not defined -2: infinite solution -1: cannot be executed 0: no solution 1: optimized solution if status == 1: # result print("x =", x.value(), "y =", y.value()) > x = 2.0 y = 3.0

“status” shows if the optimization problem was successfully solved.

### Full code

from pulp import * # LP Variables x = LpVariable("x", 0, 5) # variable x with 0 <= x <= 5 y = LpVariable("y", 0, 5) # variable x with 0 <= y <= 5 # Use LpProblem() to create new problems. Create “myProblem”: prob = LpProblem("myProblem", LpMinimize) # Constraints prob += x + y == 5 prob += 2*x - y == 1 # Solve status = prob.solve(PULP_CBC_CMD(msg=0)) # -3: not defined -2: infinite solution -1: cannot be executed 0: no solution 1: optimized solution if status == 1: # result print("x =", x.value(), "y =", y.value())