【发布时间】:2020-06-14 06:46:36
【问题描述】:
我是 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
提前致谢
【问题讨论】:
-
你想达到什么目的? 修复变量?添加一个约束来做到这一点(或更丑陋:使用变量边界)。我不认为您可以触摸变量值。根据用例的不同,还有Parameters的概念。
-
所以 S 参数在我的研究中随着时间的推移而变化,这是我的一个约束,我把这个 S 放在一个 for 循环中并为其设置下限和上限,我最小化另一个变量也取决于 S。我想要做的是提前设置 S 变量的第一个值,如 S[0]=320000 但其他如 S[1],...S[99] 可以取任何值在优化问题中。我可以编辑变量的值,如果它像我展示的那样具有 1-dim,但是当涉及到多维变量时,它不起作用
-
任一使用参数(如果效果很好 -> 例如,当它在 S 中总是相同的索引时 -> 拆分为大小为 1 的参数和大小为 n-1 的 var;它还可以保护多个 dcp-规范化)或修复的约束(然后您每次都为 dcp-canonicalization 付费)。恕我直言,除了读出结果外,不要碰
.value(直到你找到一些允许这样做的明确文档)。另外:不要被这样一个事实所误导,您的代码在使用单例变量时不会崩溃。要么这是一种专业化(隐藏的参数使用),要么是没有受到问题保护的东西,要么......恕我直言:不要利用它
标签: python optimization cvxpy