使用带有cvxpy语法的python mip库

使用带有cvxpy语法的python mip库,python,cvxpy,mixed-integer-programming,coin-or-cbc,Python,Cvxpy,Mixed Integer Programming,Coin Or Cbc,对于混合整数优化问题,我需要使用CBC solver,但是在目标环境中,我不能使用作为外包软件安装的CBC solver,它必须是python库的一部分。为了解决这个问题,我找到了内置CBC解算器附带的mip库,它只需导入该库即可使用,无需单独安装CBC解算器。我的问题是,我已经有很多用cvxpy编写的代码(使用这个单独的CBC解算器)。现在的问题是,是否有可能使用CBC内置的mip库,但从常规的cvxpy接口使用它?在不更改代码的情况下,将所有内容重写为mip sytax等 我需要重写为mip

对于混合整数优化问题,我需要使用CBC solver,但是在目标环境中,我不能使用作为外包软件安装的CBC solver,它必须是python库的一部分。为了解决这个问题,我找到了内置CBC解算器附带的mip库,它只需导入该库即可使用,无需单独安装CBC解算器。我的问题是,我已经有很多用cvxpy编写的代码(使用这个单独的CBC解算器)。现在的问题是,是否有可能使用CBC内置的mip库,但从常规的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, 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
将numpy导入为np
将cvxpy作为cp导入
进口cvxopt
导入mip
def run_样本_优化():
需求=np.数组([[100500,30]、[20200,50]、[150,15,35]、[10,5,25])
产品供应=np.阵列([55020017040])
分配=cp.Variable(demand.shape,integer=True)
目标=cp.max(cp.sum(分配/需求))

constraints=[cp.sum(allocation,axis=1)有人需要编写一个包装器。但这意味着需要对cvxpys代码库有一些了解。不过这并不难。