Для этого вы можете использовать scipy.minimize(method='SLSQP')
.Документация: здесь .
Вы можете определить ограничение равенства как вызываемую функцию с подписью:
def cons1(x):
return sum(D - C*x)
SLSQP обязательно используетограничение, чтобы управлять вашей проблемой оптимизации.Обратите внимание, что это приличный градиент, поэтому вы, скорее всего, найдете локальные минимумы для задач большого размера.
Другой вариант - scipy.minimize(method=’trust-constr’)
, документация здесь .Эти методы изначально реализованы в python, поэтому исходный код и модификации доступны через.
Если у вас есть гладкая монотонная или контекстная функция, по моему опыту SLSQP
должно быть достаточно.