Mathematical programming techniques