优化器python函数进行优化

时间:2017-02-01 18:58:03

标签: python optimization scipy

我需要优化一个功能。 为此,我使用scipy.optimize.basinhopping函数。

我编写了要优化的函数和进行更改的函数,我调用了这样的stagehopping函数:

result = basinhopping(func_to_be_optimized, x0,
                  take_step=take_step,
                  niter=10, niter_success=10,
                  disp=True)

x0是猜测的初始解决方案。

我的问题是func_to_be_optimized函数被调用了很多次,然后调用了take_step函数。 但通常它必须是:一次调用take_step和一次调用func_to_be_optimized等。

此外,func_to_be_optimized函数有一个X参数,它在每次调用时都被修改,但不是由我的函数take_step修改。

为什么我有这个问题?

1 个答案:

答案 0 :(得分:0)

来自docs

算法是迭代的,每个循环由以下特征组成

  1. 坐标的随机扰动
  2. 本地最小化
  3. 根据最小化的函数值接受或拒绝新坐标
  4. 步骤1.使用take_step。步骤2.(局部最小化)将多次调用您的func_to_be_optimized。