小编nic*_*met的帖子

将scipy.optimize.minimize限制为整数值

我正在使用scipy.optimize.minimize优化现实世界的问题,答案只能是整数.我当前的代码如下所示:

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]))
Run Code Online (Sandbox Code Playgroud)

这会产生:

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]
Run Code Online (Sandbox Code Playgroud)

但我希望它用整数值进行优化(将所有四舍五入x到最接近的整数并不总是给出最小值).

有没有办法scipy.optimize.minimize只使用整数值?

(我想我可以创建一个包含所有可能排列的数组,x并为每个组合评估f(x),但这似乎不是一个非常优雅或快速的解决方案.)

python optimization minimize scipy

12
推荐指数
3
解决办法
8492
查看次数

标签 统计

minimize ×1

optimization ×1

python ×1

scipy ×1