#python #scipy #scipy-optimize-minimize
Вопрос:
Это кажется тривиальной проблемой, но я нигде не могу найти, как получить значение ограничений с помощью функции minimize от scipy.
Я использую следующую функцию:
def f(r,d):
constraint1 = {
'type': 'ineq',
'args': (r,),
'fun': lambda e, r: r- calculate_risk(e) }
constraint2 = {
'type': 'ineq',
'args': (d,),
'fun': lambda e, d: 1 - np.inner(e,d) }
optimizeResult = minimize(
calculate_excess_profit,
(1/portfolio_parameters.shape[0],)*portfolio_parameters.shape[0],
method = "SLSQP",
constraints = (
constraint1,
constraint2
),
bounds = get_bounds()
)
return optimizeResult
и я хотел бы получить значение ограничения 2.
Конечно, я мог бы добавить инструкцию print в лямбда-функцию, но это будет печататься для каждой итерации. Должен быть лучший способ.
Спасибо
Комментарии:
1. Просто оцените ограничение с помощью вашего решения (! после проверки того, что вы получили действительное решение!). Что-то вроде:
constraint2['fun'](optimizeResult.x, constraint2['args'][0]])
.2. О, да, конечно! Спасибо