Я пытаюсь свести к минимуму линейную функцию более тысячи переменных. Эти ограничения являются: (ш NumPy массив с типом элемента float64)scipy.optimize.minimize игнорирует ограничение
cons = ({'type': 'ineq', 'fun': lambda w: 0.01 - abs(np.sum(w))},
{'type': 'ineq', 'fun': lambda w: 1 - abs(np.sum(vMax0(w)))},
{'type': 'ineq', 'fun': lambda w: 1 - abs(np.sum(vMin0(w)))})
, где vMax0 и vMin0 только векторизованы функцию макс (х, 0) и (х мин, 0). Оператор оптимизации:
w_raw = minimize(totalRisk, w0, bounds = wBounds, constraints = cons,
method='SLSQP', options={'disp': True})
Но оптимальные параметры даже не в допустимой области. Фактически, оптимальные параметры выходят из допустимой области после 1 или 2 итераций. Какая может быть причина? Благодаря!
Ваши ограничения <= 1 и <= 0,01? – ryanpattison
Ваша строка 'cons' даже не синтаксически корректна. Просьба предоставить SSCCE (http://sscce.org/), который демонстрирует проблему. – NPE
@rpattiso В принципе, я хочу, чтобы сумма компонентов w была близка к 1 (<0,01), а положительные компоненты имели сумму меньше или равную 1, а отрицательные компоненты имеют сумму, большую или равную -1. –