Building and Solving Mathematical Programming Models: 50 Practical Examples