Реализовать ограничение LMI с помощью CVXPY - PullRequest
1 голос
/ 02 июня 2019

Поэтому я пытаюсь реализовать простой код оптимизации в Python, используя пакет CVXPY (задача оптимизации с ограничением линейного матричного неравенства). Код показан ниже.

Я попытался запустить код с использованием Python 3.6.

import cvxpy as cp
import numpy as np
import matplotlib.pyplot as plt
import control as cs

gamma = cp.Variable();
MAT1 = np.array([[1, gamma], [1+gamma, 3]])

constraints_2 = [MAT1 >> 0]
prob = cp.Problem(cp.Minimize(gamma),constraints_2)
prob.solve()

Каждый раз, когда я пытаюсь запустить этот код, я получаю следующую ошибку:

"Неквадратная матрица в положительно определенном ограничении."

Но матрица явно квадратная! Так что я не знаю, что происходит. Есть идеи? Ваша помощь очень ценится!

1 Ответ

1 голос
/ 02 июня 2019

MAT1 - это пустой массив, вам нужно сделать его переменной cvxpy, чтобы использовать полуопределенное ограничение. Попробуйте это:

MAT1 = cp.Variable((2, 2))
constraints_2 = [MAT1 >> 0, MAT1[0, 0] == 1, MAT1[1, 0] == 1 + MAT1[0, 1], MAT1[1, 1] == 3]
prob = cp.Problem(cp.Minimize(MAT1[0, 1]), constraints_2)

gamma составляет около -2.73

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...