2017-10-31 21 views
0

私はPythonを初めて使い、パラメータ最適化にCMA-ES関数を適用したいと考えています。私はRでCMA_ESパッケージを使用していましたが、この例の実装は単純明快です。今ではPythonでの実装はあまり明確ではありません。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の値は最小です。

########################### MINIMIZING THE RMSE WITH CMA_ES######## 
    import cma 
    help(cma.fmin) 

私にとっては、関数を使用してgamapdcの値を取得してRMSEを最小限に抑える方法が明確ではありません。どんな提案も感謝します。再現可能な例がありますか?

答えて

0

PythonでのCMA_ES最適化は、1次元最適化をサポートしていません。したがって、解決策は追加のパラメータを1つ追加することです。