Я совершенно новичок в scipy.
Две переменные (x1 и x2) тестируются внутри pandas фрейма данных и дают результат p.
Я ищу, чтобы найти x1 и x2, так что p минимизировано.
Границы x1 и x2 одинаковы (-4,4)
Вот мой текущий код
def objective(x):
x1 = x[0]
x2 = x[1]
df.loc[(df['H3'] <= x1) & (df['A3'] >= x2), 'BH'] = 'Y'
df.loc[(df['H3'] > x1) | (df['A3'] < x2), 'BH'] = 'N'
df.loc[(df['BH'] == 'Y') & (df['SPR'] == 'A'), 'PH'] = -1
df.loc[(df['BH'] == 'Y') & (df['SPR'] == 'H'), 'PH'] = df['SPC'] - 1
df.loc[df['BH'] == 'N','PH'] = 0
df.loc[df['SPR'] == 'D','PH'] = 0
p = df['PH'].sum()
return p
x0 = [0,0]
b1 = (-4,4)
b2 = (-4,4)
bnds= (b1,b2)
sol = minimize (objective,x0,method='SLSQP',bounds=bnds)
Однако, это только кажется возвращает ответ для x1 = 0 и x2 = 0 и не пробует никаких других значений в пределах ...
Что мне здесь не хватает?
Спасибо