

0 / 2 embers
0 / 3000 xp
click for more info
Complete a lesson to start your streak
click for more info
Still calibrating
click for more info
Not enough gems
Cost: 6 gems
1: Linear Programming
incomplete
2: Profit Function
incomplete
3: Contour Lines
incomplete
4: Simplex Algorithm
incomplete
5: Simplex Algorithm for Solving LP Problems
incomplete
6: Tableau Review
incomplete
7: Simplex Tableau – Slack Variables
incomplete
8: Simplex Tableau – Slack Variables
incomplete
9: Simplex Tableau – Basic Variables and the Solution
incomplete
10: Tableau Solution
incomplete
11: Pivoting the Tableau – When to Stop
incomplete
12: Finding the Pivot Column
incomplete
13: Finding the Pivot Row
incomplete
14: Pivot Row Review
incomplete
15: The Pivot Operation
incomplete
16: Pivot Review
incomplete
17: Solving the Whole Simplex
incomplete
Back
ctrl+,
Next
ctrl+.
This lesson's interactive features are locked, please to keep using them
We're going to build a SimplexSolver from scratch! Unfortunately, a simplex solver that can handle a large numbers of vertices in more than 2 dimensions is a bit more complex than the simple examples we've looked at so far. We'll be building the more complex, more robust, and more useful version! Don't worry, we'll do it piece-by-piece.
SimplexSolver is a class that holds the state of the algorithm in its data member variables:
self.objective: The bottom row of the simplex matrix, or tableau. It holds the coefficients of the objective function.self.rows: The other rows of the simplex tableau. This is a list of lists (i.e., rows x columns).self.constraints: A list of the constraint values.For example, in our bakery scenario from before, we have the following data, where cakes = x and cookies = y.
profit = (x * 5) + y
or
profit - 5x - y = 0
x <= 250
y <= 200
x + y <= 300
0 <= x
0 <= y
self.constraints = [250, 200, 300]
# Tableau
self.rows = [
[1.0, 0.0],
[0.0, 1.0],
[1.0, 1.0],
]
self.objective = [-5.0, -1.0]
We'll only be supporting "less than or equal to" constraints for the sake of simplicity. Most problems can be modeled using only the <= operator.
At Mappy we sell 3 different subscriptions to our app:
Due to the number of external API licenses that we hold, we have the following constraints:
We'll be using our simplex solver to help answer the question:
How many of each subscription should we sell to maximize profit?
Complete the __init__ and add_constraint functions.