SLSQP错误:边界长度与x0

时间:2018-03-28 15:29:42

标签: python-3.x numpy scipy minimization

您好我正在使用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变量中只有一个元组对并且有一个猜测,不确定是什么问题。

1 个答案:

答案 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)