https://machinelearningmastery.com/a-gentle-introduction-to-optimization-mathematical-programming/