我试图用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函数。理想情况下,我的解决方案不会改变约束。谢谢你的帮助:)
目前没有回答
相关问题 更多 >
编程相关推荐