gpt4 book ai didi

python - 使用带有 cvxpy 语法的 python-mip 库

转载 作者:行者123 更新时间:2023-12-04 13:53:37 38 4
gpt4 key购买 nike

我需要使用 CBC 求解器来解决混合整数优化问题,但是在目标环境中我不能使用作为外包软件安装的 CBC 求解器,它必须是 python 库的一部分。为了克服这个问题,我找到了 mip 库 https://pypi.org/project/mip/ https://docs.python-mip.com/en/latest/index.html它带有内置的 CBC 求解器,只有导入这个库才能使用,不需要单独安装 CBC 求解器。我的问题是,我已经有大量用 cvxpy 编写的代码(使用这个单独的 CBC 求解器)。现在的问题是,是否有可能使用 mip 库中内置的 CBC,但从常规 cvxpy 接口(interface)使用它?在不更改代码的情况下,将所有内容重写为 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, 200, 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/
我已经使用它并且它有效。

This package allows you to solve CVXPY problems using the python-mip package as a backend solver. It works for mixed integer linear problems.

This allows you to use CBC from CVXPY without needing to manually install CBC. By default, CVXOPT calls CyLP to use CBC and requires CBC to be manually installed. python-mip, on the other hand, comes with CBC bundled through pypi.

关于python - 使用带有 cvxpy 语法的 python-mip 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66494636/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com