Python 如何修复一些cvxpy矩阵元素,同时允许其他元素发生变化?

Python 如何修复一些cvxpy矩阵元素,同时允许其他元素发生变化?,python,matrix,cvxpy,convex-optimization,Python,Matrix,Cvxpy,Convex Optimization,我对cvxpy有一个问题,文档太少了!我想知道是否有人能就如何使矩阵变量的某些元素固定而让其他元素变化提供建议 我没有问题提供我的原始代码,但它很复杂,所以这里有一个玩具的例子 import cvxpy as cvx A = cvx.Variable(12) obj = cvx.Minimize(cvx.sum(A)) constraints = [] constraints += [A > -1] A[1][1].value = 9 # ?? problem = cvx.P

我对cvxpy有一个问题,文档太少了!我想知道是否有人能就如何使矩阵变量的某些元素固定而让其他元素变化提供建议

我没有问题提供我的原始代码,但它很复杂,所以这里有一个玩具的例子

import cvxpy as cvx 

A = cvx.Variable(12)

obj = cvx.Minimize(cvx.sum(A))

constraints = []
constraints += [A > -1]

A[1][1].value = 9 # ?? 

problem = cvx.Problem(obj, constraints)
problem.solve()

思想:除非我做错了什么,否则我注意到我不能包含平等约束。对于我要修复的每个元素,可以包含两个不等式约束?1:通过约束修复变量。对这可能看起来很奇怪,但或多或少是在高级建模框架中实现这一点的唯一安全方法,而且每个好的解算器(->复杂的预解算组件)都不会显示出慢下来(与低级修复相比)。示例:
constraints+=[A[1][1]==9]
(这是一个约束->
=
!)当然,对于更复杂的示例,您可以使用大多数numpy/scipy索引技巧来实现这一点。示例2:您的示例很奇怪,因为
A=cvx。变量(12)
是由12个元素组成的一维向量,
A[1][1].value=9#?
看起来像2d索引/矩阵索引。3:我一直认为只有在解决并检查有解决方案后,访问
my_var.value
才是安全的/允许的。尚未求解的某个模型变量不应有任何值!我想这些东西只允许用于参数(参见文档;并不是真正有助于解决您的问题的东西)。嘿,Sascha,非常感谢您的时间和回复!我真的很感激!抱歉,我的反馈太晚了:除非我做错了什么,否则我注意到我不能包含平等约束。对于我要修复的每个元素,可以包含两个不等式约束?1:通过约束修复变量。对这可能看起来很奇怪,但或多或少是在高级建模框架中实现这一点的唯一安全方法,而且每个好的解算器(->复杂的预解算组件)都不会显示出慢下来(与低级修复相比)。示例:
constraints+=[A[1][1]==9]
(这是一个约束->
=
!)当然,对于更复杂的示例,您可以使用大多数numpy/scipy索引技巧来实现这一点。示例2:您的示例很奇怪,因为
A=cvx。变量(12)
是由12个元素组成的一维向量,
A[1][1].value=9#?
看起来像2d索引/矩阵索引。3:我一直认为只有在解决并检查有解决方案后,访问
my_var.value
才是安全的/允许的。尚未求解的某个模型变量不应有任何值!我想这些东西只允许用于参数(参见文档;并不是真正有助于解决您的问题的东西)。嘿,Sascha,非常感谢您的时间和回复!我真的很感激!很抱歉反馈太晚