https://medium.com/@monocosmo77/working-with-different-types-of-optimization-problems-part1-machine-learing-2024-846924397cc6