首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMA-ES参数优化Python

CMA-ES参数优化Python
EN

Stack Overflow用户
提问于 2017-10-31 10:57:26
回答 2查看 612关注 0票数 0

我是Python新手,我想将CMA函数应用于参数优化。我在R中使用了CMA_ES包,该示例的实现非常简单和清晰。现在,Python中的实现对我来说不是很清楚。

代码语言:javascript
复制
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的值最小。

代码语言:javascript
复制
  ########################### MINIMIZING THE RMSE WITH CMA_ES########
   import cma
   help(cma.fmin)

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-24 18:56:06

Python中的CMA_ES优化不支持一维优化。因此,解决方案是添加一个额外的参数

票数 1
EN

Stack Overflow用户

发布于 2019-06-26 09:32:58

如果你想优化一个一维函数,你不需要协方差矩阵调整,所以CMA可能不是你想要的。尽管如此,CMA还是提供了步长调整,甚至对于1D来说也可能很有趣,这非常简单,所以如果您愿意,可以自己实现它,请检查第五条成功规则。

我建议您从scipy.optimize API:https://docs.scipy.org/doc/scipy/reference/optimize.html开始,并查看第一部分Scalar函数优化。有很多方法更适合你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47033699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档