Создание ограничений для оптимизации в scipy с использованием цикла - PullRequest
0 голосов
/ 27 апреля 2019

Есть много ограничений, которые я буду использовать при оптимизации с помощью scipy; поэтому мне нужно создать ограничения по циклу. Ниже приведен пример моих ограничений:

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

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

cons ={}
for i in range(50):
    cons['type'] = 'ineq'
    cons['fun'] = lambda x: -x[i] - 2 * x[1] + 2

1 Ответ

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

Вы обновляете минусы каждый раз.Попробуйте это

_tmp = []
for i in range(50):
    _tmp.append({'type':'ineq', 'fun': lambda x: -x[i] - 2 * x[1] + 2})

cons = tuple(_tmp)

И это более питонический

cons = tuple([{'type':'ineq', 'fun': lambda x: -x[i] - 2 * x[1] + 2} for i in range(50)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...