演化计算(实例:多峰函数最值)

本文介绍了一种使用演化计算寻找多峰函数最大值的方法,具体为求解函数f(x,y)=21.5+x*sin(4*PI*x)+y*sin(20*PI*y)在特定定义域内的最大值。采用郭涛算法,通过随机搜索和种群更新策略进行迭代优化。程序使用C++编写,并展示了关键代码实现。" 112455142,9276313,安卓开发:添加单词图片与界面美化教程,"['Android开发', 'UI设计', 'ListView', 'Adapter']
摘要由CSDN通过智能技术生成

    

    演化计算是基于随即搜索的新算法;它的技术模型源于自然的演化。下面是一个例子,该函数是典型的多峰(震动剧烈)的函数。用的算法是郭涛算法。

问题:

求函数的最大值 :
       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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值