Как решить задачи линейной оптимизации с ограничением 1D-массива в scipy?Python

Программы на Python
Anonymous
Как решить задачи линейной оптимизации с ограничением 1D-массива в scipy?

Сообщение Anonymous »

У меня есть проблема оптимизации, где одно из ограничений:

Код: Выделить всё

(weighted sum of x_i) = constant
.
Вот пример:

Код: Выделить всё

# Solving: ones @ x -> min
# weights 1D-array (n)
ones = np.ones_like(weights)
coefficient = 1/2 * len(weights) * np.prod(weights)
# constrain I want: weights @ x == coefficient

Код: Выделить всё

scipy.optimize.linprog
требует 2D-массив в качестве матрицы коэффициентов для ограничения равенства и 1D-массив для правой части. Но в моем случае в качестве коэффициентов у меня есть 1D-массив (можно легко преобразовать в диагональную матрицу).
У нас также есть коэффициент в правой части, который мы не можем преобразовать в вектор, потому что существует множество вариантов, в которых сумма одинакова, но значения x_i разные, поэтому мы не можем просто ограничить все значения x_i.
Что делать? сделать, чтобы решить проблему с такими ограничениями?

Подробнее здесь: https://stackoverflow.com/questions/775 ... n-in-scipy

Вернуться в «Python»