Ограничение неизвестного типа передается в функцию - PullRequest
2 голосов
/ 10 апреля 2019

Привет! У меня проблема с минимизацией, и я хотел попробовать метод 'trust-constr' с функцией scipy optimize.minimize, чтобы сравнить его с результатами SLSQP.К сожалению, я не знаю, почему, когда я устанавливаю свой метод на 'trust-constr', он говорит мне, что:

ValueError: constraint передано неизвестного типа.

Кодследующее:

con1 = {'type':'eq', 'fun': eq2}
con2 =  {'type':'ineq', 'fun' : ieq_bck2}
con3 =  {'type':'ineq', 'fun' : ineq_rb2}
con4 =  {'type':'ineq', 'fun' : ls2}

con = ([con1, con2, con3, con4])

scipy.optimize.minimize(fitness2, opt, method = 'trust-constr', jac = 
'cs', hess = h1, constraints = con)

Есть идеи, как это решить?

1 Ответ

1 голос
/ 10 апреля 2019

Согласно документации Scipy , ваша переменная con должна быть словарем.Существует также пример, con должен быть что-то вроде:

cons = ({'type': 'ineq', 'fun': lambda x:  x[0] - 2 * x[1] + 2},
        {'type': 'ineq', 'fun': lambda x: -x[0] - 2 * x[1] + 6},
        {'type': 'ineq', 'fun': lambda x: -x[0] + 2 * x[1] + 2})

Так что в вашем случае, сделайте следующее:

con = (con1, con2, con3, con4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...