discOpt discrete optimization problem example with coinMP requirements CoinMP library eigen lib Solving problems knapsack with branch and cut algorithm