In this post, I explore the topic of linear programming, a very powerful deterministic optimization technique that is used for maximizing or minimizing an objective function that is constrained by a set of linear equations to form a feasible region. This post isn't going to delve into the basics of linear programming, rather, I wanted to show you how you can use Python and in specific, the PuLP modeler to formulate and solve a real-world optimization problem for scheduling jobs. The heatmaps below visualize the problem solution.
Now that we've formulated and solved the linear program, let's talk about how we can make this more realistic. You could explore:
- Adding changeover constraints- Everytime manufacturing switches from one batch to another, there is changeover time that needs to be accounted for. During this period there is no manufacturing happening, but that time still has cost associated with it.
- Insufficient Capacity- Right now, we are only considering 5 day's worth of available production capacity. How can we improve the model to handle jobs that are in excess of available production capacity? Maybe we need to have roll-over days?
- Jobs that arrive mid-week- In our model, we've assumed a 1-week lock. Which means that any jobs that we receive throughout the week will only be scheduled for the following week starting Monday. Can we adjust the model such that it can schedule jobs that arrive mid-week in the same week?