演化计算是基于随即搜索的新算法;它的技术模型源于自然的演化。下面是一个例子,该函数是典型的多峰(震动剧烈)的函数。用的算法是郭涛算法。
问题:
求函数的最大值 :
f(x,y)=21.5+x*sin(4*PI*x)+y*sin(20*PI*y)
定义域 D: -3<=x<=12.1 , 4.1<=y<=5.8
目前最好结果:f(11.6255448,5.7250441)=38.8502944790207
程序在VC++.NET上调试,原代码如下(仅供参考):
/*
* 类_Point表示二维空间的向量,即目标函数的自变量点
*
***************************************************************/
#pragma once
class _Point
{
public:
double x,y;
_Point(void):x(0),y(0)
{
}
_Point(double xx,double yy):x(xx),y(yy)
{
}
~_Point(void)
{
}
_Point & operator =(const _Point &point)
{
this->x=point.x;
this->y=point.y;
return *this;
}
_Point & operator +(const _Point &point)
{
this->x+=point.x;
this->y+=point.y;
return *this;
}
_Point & operator *(double k)
{
this->x*=k;
this->y*=k;
return *this;
}
};
/*
* name: