Constrained Optimization – Minimizing Supplier Side Risk

I have a particular interest in constrained optimization problems, as I find them to be some of the most natural problems in mathematics that have clear real world applications. Having worked at a medium sized warehouse and sold on Amazon, I’ve come to find supply chain problems of particular interest. Perhaps I have an operations research career ahead of me, or more likely I’ve just solved a problem that’s already been solved. But, I did this completely on my own and I enjoyed the challenge. Took me about 3 hours from start to finish, and that included generating fake order data.

I set out to provide a framework to help placing orders from suppliers, while trying to minimize risk. I thought of two main types of risk: excess lead times and QA defection rate. The first case handles when orders have a greater lead time than promised, which could cause further issues in manufacturing or production. The second case represents that quality of the products a particular supplier delivers. Lower cost may be indicative of higher rates of bad product. My framework looks to provide an optimal order of K products among warehouses.

Click the red button below to get taken to my formal writeup

I want to stress that I understand I made a lot of assumptions and just made a general case solver. Some suppliers may not have the same set of SKU’s, shipping from multiple suppliers and distance also should be a factor in orders, and oftentimes bulk orders receive discounts in pricing, etc.

Regardless, I enjoyed myself while trying to solve this problem and look forward to more operations research and supply chain study in the future.

I wrote my solver in Python and used scipy’s ‘minimize’ functionality. Given constraints on capital, a required order list, and a choice of how much to weight both lead time and QA risk, it provides an output similar to the one below.