python - 如何使用 scipy.optimize.linprog 获得整数解?

标签 python scipy

当我解决线性规划问题时,如下式,我希望x的结果全部是int类型

考虑以下问题:

最小化:f = -1*x[0] + 4*x[1]

服从于:

-3*x[0] + 1*x[1] <= 6    
1*x[0] + 2*x[1] <= 4    
x[1] >= -3

其中:-inf <= x[0] <= inf

接下来是 python 编码器

>>> c = [-1, 4]
>>> A = [[-3, 1], [1, 2]]
>>> b = [6, 4]
>>> x0_bounds = (None, None)
>>> x1_bounds = (-3, None)
>>> res = linprog(c, A_ub=A, b_ub=b, bounds=(x0_bounds, x1_bounds),
...               options={"disp": True})
>>> print(res)
Optimization terminated successfully.
Current function value: -11.428571
Iterations: 2
status: 0
success: True
fun: -11.428571428571429
x: array([-1.14285714,  2.57142857])
message: 'Optimization terminated successfully.'
nit: 2

最佳答案

来自docs :

method : str, optional Type of solver. At this time only ‘simplex’ is supported.

Simplex 无法处理完整性约束,因此您还无法使用 scipy.optimize.linprog 解决整数规划问题。您可以尝试其他库,例如 PuLP , PyomoCVXOPT .

关于python - 如何使用 scipy.optimize.linprog 获得整数解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39101137/

相关文章:

python - 由于动态变量,在 Python 中高效地创建列表

python - Python 中文件解析器的包装或继承

python - 不完全 Gamma 函数不接受复数值输入

python - 无法在heroku中获取媒体文件

python - 装饰函数返回 None

python - 从一个数据的结构中找到外推并将其应用于另一个数据

python - 将 numpy 矩阵转换为一维 numpy 数组

python - 提高 Scipy 稀疏矩阵乘法的性能

python - 导入错误: cannot import name BayesianGaussianMixture

python - SciPy 中的截断多元正态分布?