Python 如何设置cvxpy n-dim变量的第一个值?

Python 如何设置cvxpy n-dim变量的第一个值?,python,optimization,cvxpy,Python,Optimization,Cvxpy,我是python的初学者,我尝试将cvxpy库用于我的优化项目。我试图改变我的n维变量的第一个值,但是我得到了一个AttributeError import cvxpy as cp S = cp.Variable(100) S[0].value=320000 output:AttributeError: can't set attribute 它适用于一维变量 import cvxpy as cp S = cp.Variable() S.value=320000 提前感谢该“变量”对象不支

我是python的初学者,我尝试将cvxpy库用于我的优化项目。我试图改变我的n维变量的第一个值,但是我得到了一个AttributeError

import cvxpy as cp
S = cp.Variable(100)
S[0].value=320000

output:AttributeError: can't set attribute
它适用于一维变量

import cvxpy as cp
S = cp.Variable()
S.value=320000

提前感谢

该“变量”对象不支持项目分配。您可以强制您的要求作为约束:

import cvxpy as cp
S = cp.Variable(100) # Define your variables

objective = ... # Define your objective function

constraints = [] # Create an array of constraints
constraints.append(S[0]==320000) # Make your requirement a constraint

# Add more constraints

prob = Problem(objective, constraints) # Define your optimization problem
prob.solve(verbose=True) # Solve the problem

print(S.value)


你想达到什么目标?修正一个变量?添加一个约束来执行此操作或更丑陋的操作:使用变量边界。我认为你不允许触摸变量值。根据用例的不同,还有S的概念。因此,在我的研究中,S参数随着时间的推移而变化,它在我的一个约束中,我将这个S放在for循环中,并为它设置上下限,我最小化另一个变量也取决于S。我想做的是预先设置S变量的第一个值,如S[0]=320000,但其他如S[1],…S[99]可以在优化问题中取任何值。我可以编辑变量的值,如果它有1-dim,如我所示,但当涉及到多维变量时,它不起作用。如果效果很好,也可以使用参数->例如,当它总是在s中相同的索引->在大小为1的参数中拆分,而大小为n-1的变量中拆分;它还可以保护多个dcp规范化或修复的约束,然后每次您都要为dcp规范化付费。Imho,除了读取结果之外,不要触摸.value,直到找到明确的文档允许这样做。另外:不要被这样一个事实误导,即当使用singleton-var时,您的代码不会崩溃。这可能是一种特殊化隐藏参数用法,没有问题保护,或者……Imho:不要利用它