資源簡介
實現的是基本差分進化算法,輸入種群大小,進化代數,交叉因子,縮放因子,就可輸出結果
代碼片段和文件信息
/*DE_test
?*對相應的Matlab程序進行測試
?*/
#include?
#include?
#include?
using?namespace?std;
//產生隨機數,隨機數為(0.0,1.0)
double?Rand_Double(void)
{
return?static_cast(rand())?/?static_cast(RAND_MAX);
}
//測試函數Hansen
//參數個數為2??維數為2
double?Hansen(double?*p_pars)
{
return?(?cos(1.0)?+?2.0*cos(p_pars[0]+2.0)?+?3.0*cos(2.0*p_pars[0]+3.0)?
+?4.0*cos(3.0*p_pars[0]+4.0)?+?5.0*cos(4.0*p_pars[0]+5.0)?)
*?(?cos(2.0*p_pars[1]+1.0)?+?2.0*cos(3.0*p_pars[1]+2.0)?+?
3.0*cos(4.0*p_pars[1]+3.0)?+?4.0*cos(5.0*p_pars[1]+4.0)?+?5.0*cos(6.0*p_pars[1]+5.0)?);
}
class?CFunction
{
public:
void?*m_p_fun;//指向測試函數的指針
int?m_pars_num;//參數個數?空間維數
double?m_min;//下限
double?m_max;//上限
bool?m_pos;//求解最小值還是最大值,如果是最小值則m_pos為false,如果是最大值則m_pos為true
public:
CFunction(void?*p_funint?pars_numdouble?mindouble?maxbool?pos)
:m_p_fun(p_fun)m_pars_num(pars_num)m_min(min)m_max(max)m_pos(pos)
{
}
virtual?double?Compute(double?*p_pars)?=?0;
- 上一篇:SURF源碼 win C++
- 下一篇:用c語言實現PING程序設計
評論
共有 條評論