如何解决使用带有 cvxpy 语法的 python-mip 库
我需要使用 CBC 求解器来解决混合整数优化问题,但是在目标环境中我不能使用作为外包软件安装的 CBC 求解器,它必须是 python 库的一部分。为了解决这个问题,我找到了内置 CBC 求解器附带的 mip 库 https://pypi.org/project/mip/ https://docs.python-mip.com/en/latest/index.html,只有导入这个库才能使用它,不需要单独安装 CBC 求解器。我的问题是,我已经有大量用 cvxpy 编写的代码(使用这个单独的 CBC 求解器)。现在的问题是,是否有可能使用 mip 库中内置的 CBC,但从常规 cvxpy 接口使用它?无需更改代码,将所有内容重写为 mip sytax 等。
我需要重写为 mip 语法的示例代码:
import numpy as np
import cvxpy as cp
import cvxopt
import mip
def run_sample_optimization():
demand = np.array([[100,500,30],[20,200,50],[150,15,35],[10,5,25]])
product_supply = np.array([550,170,40])
allocation = cp.Variable(demand.shape,integer=True)
objective = cp.Maximize(cp.sum(allocation/demand))
constraints =[cp.sum(allocation,axis=1) <= product_supply,allocation <= demand,allocation >= 0]
problem = cp.Problem(objective,constraints)
optimal_value = problem.solve(solver=cp.GLPK_MI) # <-- it would be perfect to link somehow from this place to CBC implemented in mip library
print('product supply:',product_supply)
print('demand:\n',demand)
print('allocation:\n',allocation.value)
print('calculated score:',optimal_value)
return product_supply,demand,allocation.value,optimal_value
非常感谢!
解决方法
使用这个包https://pypi.org/project/mip-cvxpy/ 我用过,效果不错。
这个包允许你使用 python-mip 包作为后端求解器来解决 CVXPY 问题。它适用于混合整数线性问题。
这允许您从 CVXPY 使用 CBC,而无需手动安装 CBC。默认情况下,CVXOPT 调用 CyLP 以使用 CBC,并且需要手动安装 CBC。另一方面,python-mip 带有通过 pypi 捆绑的 CBC。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。