An introduction to linear programming