Python Scipy Оптимизируйте, чтобы не распознавать лямбды при использовании массива numpy - PullRequest
0 голосов
/ 11 октября 2018

При попытке создать алгоритм оптимизации для работы я обнаружил конкретную проблему:

Вот некоторая базовая информация о коде:

LZ - это вложенный список.

M - массив массивов, преобразованный из вложенного списка.

вот код:

for i in range(len(LZ)):
    for j in range(len(LZ[i])):
        constraints1 = lambda MA, i=i,j=j: MAXQ - abs(M[i][j]-MA[i][j])
        print(M[i][j])
        if j <len(LZ[i])-1:
            constraints2 = lambda MA, i=i,j=j: PENTEMAX +((MA[i][j]-MA[i][j+1])/LL[i][j])
            constraints3 = lambda MA, i=i,j=j: PENTEMAX - ((MA[i][j]-MA[i][j+1])/LL[i][j])
        cons.append({'type' : 'ineq','fun' : constraints1})
        cons.append({'type' : 'ineq','fun' : constraints2})
        cons.append({'type' : 'ineq','fun' : constraints3})
x0 = M
sol = minimize(objective,x0,method='SLSQP',constraints=cons)

Я запускаю код, и здесьэто то, что я получаю: он печатает M [i] [j] просто отлично, печать длинная, поэтому я не копировал его здесь:

Traceback (most recent call last):
  File "D:/Opti Assainissement/VOIRIE5.py", line 118, in <module>
    sol = minimize(objective,x0,method='SLSQP',constraints=cons)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\optimize\_minimize.py", line 611, in minimize
    constraints, callback=callback, **options)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\optimize\slsqp.py", line 315, in _minimize_slsqp
    for c in cons['ineq']]))
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\optimize\slsqp.py", line 315, in <listcomp>
    for c in cons['ineq']]))
  File "D:/Opti Assainissement/VOIRIE5.py", line 101, in <lambda>
    constraints1 = lambda MA, i=i,j=j: cdt(MA,i,j)
  File "D:/Opti Assainissement/VOIRIE5.py", line 98, in cdt
    return MAXQ - abs(M[i][j]-MA[i][j])
IndexError: invalid index to scalar variable.

Моим первым предположением было то, что SciPy не распознает MA как массив, но я не могу знать, связано ли это с SciPy или лямбда-конструкцией, или с моим отсутствием знаний в этом вопросе.Я буду рад получить помощь от сообщества!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...