Я пытаюсь использовать решатель MOSEK с cvxpy, но я получаю:
TypeError: аргументы ключевого слова должны быть строками
Я собрал минимальный пример, где ошибка все еще происходит. Вот пример:
import cvxpy as cvx
x = cvx.Variable()
y = cvx.Variable()
constraints = [x + y <= 3]
prob2 = cvx.Problem(cvx.Maximize(x + y), constraints = constraints)
sol = prob2.solve(solver=cvx.MOSEK)
print("optimal value", sol)
Это происходит даже с этой очень простой проблемой.
Это похоже на ошибку. Было бы неплохо сообщить о проблеме на github.
Пока, если ваша проблема QP, она должна работать с OSQP:
sol = prob2.solve(solver=cvx.OSQP)
Я не знаю cvxpy, но у вас есть в аргументе ключевого слова code snippet 2:
[x + y <= 3]
который НЕ является строкойcvx.MOSEK
для меня неизвестный типТаким образом, по вашему сообщению об ошибке, по крайней мере один из них должен быть строкой. Попробуйте использовать
constraints = "x + y <= 3"
вместо
constraints = [x + y <= 3]
AttributeError: 'str' object has no attribute 'variables'
cvx.Mosek
. Попробуйтеprint(type(cvx.Mosek))
чтобы убедиться, что его типstr
.