Optimization for Non-Negative Least Squares