您好我正在使用python上的SLSQP解算器和神秘包中的diffev2。
对于多个参数,下面显示的格式有效:
bnds = ((0, 1e3), (0, 1e-4))
optimize.minimize(Error, [1e-8, 1e-7], args=(E, Bt, L, dt, TotT, nz, Co, Exmatrix), method = 'SLSQP', bounds = bnds)
我想只优化一个参数,即当我遇到错误时:SLSQP错误:边界长度与x0的长度不兼容。 我使用下面显示的语法:
bnds = ((1e-9, 1e-2))
optimize.minimize(Error, [1e-8], args=(U, E, Bt, L, dt, TotT, nz, Co, Exmatrix), method = 'SLSQP', bounds = bnds)
我不确定是什么问题,因为我在bnds变量中只有一个元组对并且有一个猜测,不确定是什么问题。
答案 0 :(得分:0)
直接来自python的docs:
只需要创建一个元组(a.k.a.一个单例),就需要尾随逗号;在所有其他情况下它是可选的。没有尾随逗号的单个表达式不会创建元组,而是生成该表达式的值。 (要创建一个空元组,请使用一对空括号:()。)
工作方案:
df=pd.DataFrame(-df.reindex(index.get_level_values(0)).values+df.reindex(index.get_level_values(1)).values,index=index,columns=df.columns)
s=mapping.assign(match=1).set_index('Mapping',append=True)
pd.concat([df,s.reindex(df.index)],1).fillna(0)
Out[249]:
col_A col_B col_C col_D match
IndexA IndexB
a b 1 1 1 1 1.0
c 2 2 2 2 0.0
d 3 3 3 3 0.0
b c 1 1 1 1 0.0
d 2 2 2 2 0.0
c d 1 1 1 1 1.0
Internally,会发生这种情况:
bnds = ((1e-9, 1e-2),)
bnds = [(1e-9, 1e-2)]
(并确保您有理由不使用bnds = ((1e-9, 1e-2))
np.array(bnds, float).shape
# (2,)
bnds = ((1e-9, 1e-2),)
np.array(bnds, float).shape
# (1, 2)
# and then N is compared to the size of the first dimension (2 vs. 1)
)