CMAES参数优化Python

2024-10-02 08:23:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,我想应用CMA-ES函数进行参数优化。我使用的是R中的CMA_ES包,这个示例的实现简单明了。现在Python中的实现对我来说不是很清楚。在

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

itr=np.array([ 803.3333,788.3333,779.5000,765.8333,753.3333,735.8333, 
717.6666,704.6666,691.6666])
Tcell=np.array([39.5333,38.5499, 37.7999,37.5999, 
38.3333,37.4166,37.4166,37.3833,36.5666])

 #### THE MODEL######
 def pvwatts2(Pdc0,gammapdc,Tref):
 return itr/1000*Pdc0*(1+gammapdc*(Tcell-Tref))

 r=(pvwatts2(75,-0.005,25))

 ####THE ORIGINAL DATA########
 P=np.array([55.7666,54.6817,54.2812,
53.6679,52.6567,51.4856,50.4057,49.3098,48.8929])

 #####RMSE#########
  def RMSE(gammapdc):
      return np.sqrt(((pvwatts2(75,gammapdc,25)-P)**2).mean())

  print(RMSE(-0.005))# This is the value of RMSE 0.253590052077

现在我想借助Python中的CMAES最小化RMSE。我知道gammapdc的理想值应该在-0.005左右,其中RMSE的值最小。在

^{pr2}$

对我来说,不清楚如何使用函数来获得gamapdc的值以最小化RMSE。如有任何建议,我们将不胜感激。有什么可重复的例子我可以用吗?在


Tags: the函数importesmatplotlibdefasnp
2条回答

如果你想优化一维函数,你不需要协方差矩阵自适应,所以CMA-ES可能不是你想要的。尽管如此,CMA-ES提供了步长自适应,即使对于1D来说也可能很有趣,而且这非常简单,因此如果您愿意,您可以自己实现,请查看有关五分之一成功规则的相关文献。在

我建议您从scipy.optimizeAPI:https://docs.scipy.org/doc/scipy/reference/optimize.html开始,看第一节标量函数优化。有很多方法更适合你的问题。在

Python中的CMA_-ES优化不支持一维优化。所以解决方案是增加一个额外的参数

相关问题 更多 >

    热门问题