从fmin scipy优化中解包当前函数值和数组的值

时间:2015-12-17 22:26:34

标签: python scipy

def getMaxDeflection(self):
    def func(x): return self.getTotalDeflection(x)
    a = s.fmin(lambda x: -func(x), 0)
    return a

返回

>>> b.getMaxDeflection()
 Optimization terminated successfully.
 Current function value: -0.004343
 Iterations: 28
 Function evaluations: 56
 Out[161]: array([ 2.7473125])

如您所见,我最终得到的当前函数值为-0.004343,数组输出为2.7473。我想最终得到(0.004343,2.7473)的元组,但我不太确定如何去做。谢谢:))

1 个答案:

答案 0 :(得分:1)

查看source codedocumentation,您需要执行以下操作:

def getMaxDeflection(self):
    a = s.fmin(lambda x: -self.getTotalDeflection(x), 0, full_output=1)
    return a[1], a[0][0]

如果fopt, iter, funcalls, warnflag设置为True,则只会将值full_output添加到输出中。此外,如果您设置disp=0,还会阻止打印收敛消息。