• 大小: 4.95KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-03-27
  • 语言: C/C++
  • 标签: c  

资源简介


实现的是基本差分进化算法,输入种群大小,进化代数,交叉因子,缩放因子,就可输出结果

资源截图

代码片段和文件信息

/*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;

评论

共有 条评论