https://medium.com/@monocosmo77/how-mixed-integer-programming-works-part1-computer-science-1ebbe2df7529