I'm using `scipy.optimize.minimize` to optimize a real-world problem for which the answers can only be integers. My current code looks like this: 

```
from scipy.optimize import minimize

def f(x):
    return (481.79/(5+x[0]))+(412.04/(4+x[1]))+(365.54/(3+x[2]))+(375.88/(3+x[3]))+(379.75/(3+x[4]))+(632.92/(5+x[5]))+(127.89/(1+x[6]))+(835.71/(6+x[7]))+(200.21/(1+x[8]))

def con(x):
    return sum(x)-7

cons = {'type':'eq', 'fun': con}

print scipy.optimize.minimize(f, [1,1,1,1,1,1,1,0,0], constraints=cons, bounds=([0,7],[0,7],[0,7],[0,7],[0,7],[0,7],[0,7],[0,7],[0,7]))

```

This yields: 

```
x: array([  2.91950510e-16,   2.44504019e-01,   9.97850733e-01,
     1.05398840e+00,   1.07481251e+00,   2.60570253e-01,
     1.36470363e+00,   4.48527831e-02,   1.95871767e+00]

```

But I want it optimized with integer values (rounding all `x` to the nearest whole number doesn't always give the minimum). 

Is there a way to use `scipy.optimize.minimize` with only integer values?

(I guess I could create an array with all possible permutations of `x` and evaluate f(x) for each combination, but that doesn't seem like a very elegant or quick solution.)