如何在声明后访问 CVXPY Variables/Parameters
How to Access CVXPY Variables/Parameters After Declaration
我想标准化一些 cvxpy 问题并在我的代码库中的许多地方使用它们。这是一个干净的例子:
from cvxpy import Variable, Parameter, Problem, Minimize
def problem_builder(n, ...)
var = Variable(n)
param = Parameter(n)
costs = #Some complex convex function of var and param
return Problem(Minimize(costs), constraints)
prob = problem_builder(4)
prob.var.value = [1,2,3,4] #???
prob.parameters()[0] = [1,2,3,4] #Ugly ???
我可以在函数外部创建 var 和 param,然后将它们传递给问题,但这看起来很尴尬。
我可以通过 prob 以某种方式访问 var 和 param 吗?跨多个模块使用相同的 cvxpy 问题的最佳实践是什么?
根据 sascha 关于创建包装器的评论 class...
from cvxpy import Variable, Parameter, Problem, Minimize
class MyProblem(self, n, ...):
self._var = Variable(n)
self.param = Parameter(n)
costs = #Some complex convex function of var and param
self._problem = Problem(Minimize(costs), constraints)
def solve(self):
self._problem.solve()
return self._target
problem = MyProblem(4, ...)
for param_value in param_values:
problem.param.value = param_value
answer = problem.solve()
这允许在标准化问题设计的同时扫描参数 param。
我想标准化一些 cvxpy 问题并在我的代码库中的许多地方使用它们。这是一个干净的例子:
from cvxpy import Variable, Parameter, Problem, Minimize
def problem_builder(n, ...)
var = Variable(n)
param = Parameter(n)
costs = #Some complex convex function of var and param
return Problem(Minimize(costs), constraints)
prob = problem_builder(4)
prob.var.value = [1,2,3,4] #???
prob.parameters()[0] = [1,2,3,4] #Ugly ???
我可以在函数外部创建 var 和 param,然后将它们传递给问题,但这看起来很尴尬。
我可以通过 prob 以某种方式访问 var 和 param 吗?跨多个模块使用相同的 cvxpy 问题的最佳实践是什么?
根据 sascha 关于创建包装器的评论 class...
from cvxpy import Variable, Parameter, Problem, Minimize
class MyProblem(self, n, ...):
self._var = Variable(n)
self.param = Parameter(n)
costs = #Some complex convex function of var and param
self._problem = Problem(Minimize(costs), constraints)
def solve(self):
self._problem.solve()
return self._target
problem = MyProblem(4, ...)
for param_value in param_values:
problem.param.value = param_value
answer = problem.solve()
这允许在标准化问题设计的同时扫描参数 param。