资源简介
差分进化算法的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
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:
CFunct
评论
共有 条评论