Минимизируйте нелинейную и дифференцируемую функцию черного ящика с линейными ограничениями. - питон

Я начинаю с python и пытаюсь решить проблему, которую Fmincon решает в Matlab.

В принципе, моя проблема состоит из 12 переменных, и создается список из 2000 значений (линейно), и моя цель - максимизировать наибольшее значение этого списка.

Кроме того, проблема имеет линейное ограничение.

Я безуспешно пытался использовать scipy, но во всех решателях свободного градиента или приблизительного градиента, которые я пробовал, невозможно вставить линейные ограничения.

Я также пытался использовать cvxopt, но я не нашел никакого решателя свободного градиента или приблизительного градиента.

Кроме того, я не хотел бы использовать такие инструменты, как генетический алгоритм, PSO, поиск гармонии и т. Д.

Я хотел бы использовать решатель свободного градиента или приблизительный градиент, который можно вставить линейные ограничения, как Fmincon в Matlab.

Это моя целевая функция:

import numpy as np

def max_receita(X, f, CONSTANTE_CVAR):

# f is a matrix with 2000 rows and 12 columns
# CONSTANTE_CVAR is a matrix with 2000 rows and 12 columns

NSERIES = len(f)
REC = np.zeros(NSERIES)
X = np.transpose(X)

CONST_ANUAL = np.sum(CONSTANTE_CVAR,1)

for i in range(NSERIES):
    REC[i] = np.dot(f[i],X) + CONST_ANUAL[i]

return -max(REC)

Есть 12 переменных, представленных вектором X с 12 элементами, и этот вектор должен иметь сумму, равную 1. Это мое ограничение.

Кроме того, каждая переменная имеет свою границу. Так что решатель должен позволять вставлять границы.

Вектор X (все 12 переменных) со входами f и CONST_CVAR создает вектор REC (1x2000), и моя цель - максимизировать наибольшее значение вектора REC.

Таким образом, мне нужен решатель, который позволяет:

  • Свободный градиент или приблизительный градиент
  • Линейные ограничения
  • Нелинейная функция
  • Bounds
  • питон

Кто-нибудь может предложить какой-нибудь решатель?

0 ответов

Другие вопросы по тегам