【发布时间】:2020-10-06 19:20:59
【问题描述】:
我对 scipy 完全陌生。
在 pandas 数据框中测试两个变量(x1 和 x2)并生成结果 p。
我正在寻找使 p 最小化的 x1 和 x2。
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 的答案,并且不会尝试边界内的任何其他值...
我在这里错过了什么?
谢谢
【问题讨论】: