Как получить доступ к переменным / параметрам CVXPY после объявления - PullRequest
0 голосов
/ 07 июня 2018

Я бы хотел стандартизировать некоторые проблемы 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 вне функции и затем передать их с проблемой, но это кажется неудобным.

Могу ли я получить доступ к var и param каким-то образомс проб?Каковы лучшие практики использования одной и той же проблемы cvxpy в нескольких модулях?

1 Ответ

0 голосов
/ 08 июня 2018

Следуя комментариям Саша о создании класса-оболочки ...

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 при стандартизации дизайна проблемы.

...