Python Scipy Anneal发现解决方案超出范围

时间:2013-09-13 21:05:09

标签: python scipy

我在Python中使用Scipy进行模拟退火。我使用以下命令给退火一个上限和下限:

optimize.anneal(f, input_vector0, lower = 0, upper = 2*np.pi)

退火算法完全忽略了较低和较高的参数,并在该空间之外搜索...有谁知道为什么?这是它找到的“解决方案”:

  

31.6237632627   -42.2752494373   39.5493204901   -40.0042611884   43.6152270079   156.037896659   -94.2145500736   34.2889218355   1.38692105848   -55.5107545279   -173.884187212   95.7485871187   -126.122806244   -80.6862568532   -8.24522935611   31.0745563981   -26.1692693183   -15.4530723302   10.8388939531   -0.331091602947   -103.301042697   -47.7445000946   20.9176159149   46.2024960212   -73.3695426792   -120.496928699   -37.7412899302   -98.0482535989   78.034510108   51.6923809382   -142.940610675   84.9461667872   8.08078933482   -36.2926389711

1 个答案:

答案 0 :(得分:1)

几年前,当我看到scipy退火时,我对代码的解读是lowerupper是限制步长的随机抽取的限制。

它们不是参数本身的限制。这意味着退火不是约束求解器。

请参阅https://github.com/scipy/scipy/issues/1653

到目前为止,还没有人自愿清理和增强退火(开源)。