Ordinal Optimization: Soft Optimization for Hard Problems