Inverse combinatorial optimization