【发布时间】:2020-12-29 02:06:59
【问题描述】:
我将如何指定一个约束,以便布尔二维决策变量矩阵具有以下标准:
- 所有非零列必须相同
如果矩阵是一个 numpy 数组,我们可以使用 np.all,但我没有看到类似的 cvxpy 函数。
import numpy as np
import cvxpy as cp
import cvxopt
util = np.array([[0.7, 0.95, 0.3, 3], [2, 1.05, 2.2, 5], [4, 1, 3, 6]])
dec_vars = cp.Variable(len(util), boolean = True)
zero_cat_vars = cp.Variable(util.shape[0], boolean = True)
# example of output
dev_vars_smp_output = np.array([[0, 0, 0, 0], [1, 0, 0, 1], [1, 0, 0, 1]])
zero_cat_constr = cp.sum(dec_vars, axis=1) >= 1 * zero_cat_vars
dec_vars_excl_zeros = dec_vars[:,~cp.all(dec_vars==0, axis=1)]
col_equal_constr = cp.sum(dec_vars_excl_zeros, axis=1) == dec_vars_excl_zeros.shape[1] * zero_cat_vars
【问题讨论】:
标签: python cvxpy integer-programming