如何在约束列表中保存cvxopt.modeling.function

2024-10-03 06:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用cvxopt解决最大覆盖问题。我使用线性松弛来做到这一点。该程序通过最小化未覆盖区域来工作。约束条件之一:和(x)+Y>;=1对于Y中的所有元素,其中x是描述现场设施设置的优化变量,Y包含这些现场的覆盖空间

对于网格上的每个平铺,Y的值为covered或none covered,这是cvxopt函数对象

我最初的想法是将所有函数对象附加到一个列表中并使用。这是约束条件中的问题。cvxopt检查约束中的对象类型,因为现在是python列表,所以我得到了一个类型错误。我还在约束中尝试了for循环,但它也不喜欢这样

def Y(i):
    return modeling.dot(matrix(mat[i]), X)

# sum X plus Y

def sXpY():
    const = []
    for i in range(grid_size):
        const.append(sum(X) + Y(i))

    return sum(const)

const0 = ( sXpY() >= grid_size  )

我目前的解决方案不起作用,但它不会给我任何错误,因为我使用sum函数将数组转换回cvxopt函数。理想情况下,我的解决方案不会改变约束。谢谢你的帮助:)


Tags: 对象函数类型列表forreturndef错误