資源簡介
CMA-ES算法的C++包,里面有簡單的使用說明注釋,以及一個簡單的函數擬合舉例

代碼片段和文件信息
/**
?*?@file?example1.cpp
?*?Very?short?example?source?code.?The?purpose?of?the?example?codes?is?to?be
?*?edited/extended.
?*/
#include?
#include?
#include?“cmaes.h“
/**
?*?例子:擬合y=2*x+1
?*/
double?x_t[15]?=?{123456789};
double?y_t[15]?=?{35791113151719};
/**
?*?fitfun擬合函數(損失函數)
?*/
double?fitfun(double?const?*x?int?N)
{
????double?sum?=?0;
????for(int?i=0;?i<9;?i++)
????{
????????sum+=((x[0]*x_t[i]+x[1])?-?y_t[i])*((x[0]*x_t[i]+x[1])?-?y_t[i]);
????}
????return?sum;
}
int?main(int?char**)
{
????CMAES?evo;
????double?*arFunvals?*const*pop?*xfinal*xx;
????/**
?????*?這里設置參數個數,目前為2
?????*/
????const?int?dim?=?2;???//
????double?xstart[dim];
????for(int?i=0;?i ????double?stddev[dim];
????for(int?i=0;?i ????Parameters?parameters;
????parameters.init(dim?xstart?stddev);
????arFunvals?=?evo.init(parameters);
????std::cout?<
????while(!evo.testForTermination())
????{
????????pop?=?evo.samplePopulation();
????????for?(int?i?=?0;?i?::Lambda);?++i)
????????????arFunvals[i]?=?fitfun(pop[i]?(int)?evo.get(CMAES::Dimension));
????????evo.updateDistribution(arFunvals);
????????xx?=?evo.getNew(CMAES::XMean);
????????/**
?????????*?xx為中間的參數值,可在此判斷準確率
?????????*/
????}
????std::cout?<“Stop:“?<????evo.writeToFile(CMAES::WKResume?“resumeevo1.dat“);
????/**
?????*?xfinal為擬合的參數最終結果
?????*/
????xfinal?=?evo.getNew(CMAES::XMean);
????for(int?i=0;?i ????std::cout<
????delete[]?xfinal;
????return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-07?10:09??CMAES\
?????文件???????51429??2013-08-02?05:00??CMAES\cmaes.h
?????文件????????1831??2018-05-07?10:08??CMAES\example.cpp
?????文件???????10456??2013-08-02?05:00??CMAES\parameters.h
?????文件????????1795??2013-08-02?05:00??CMAES\random.h
?????文件????????2338??2013-08-02?05:00??CMAES\timings.h
?????文件?????????993??2013-08-02?05:00??CMAES\utils.h
- 上一篇:BOW+SIFT特征提取OpenCV實現
- 下一篇:最小生成樹MFC
評論
共有 條評論