C++语言编写猴子算法

猴子算法是一种模拟退火算法,通过在随机搜索中引入猴子来提高搜索效率。猴子算法可以用于求解最优化问题,例如最大化目标函数值、最小化损失函数等。

以下是C++代码示例:

#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cmath>

const int N = 1000;  // 猴子个数
const int T = 10000;  // 迭代次数
const double delta = 0.98;  // 温度衰减因子
const double L = 100.0;  // 搜索空间范围
const double eps = 1e-6;  // 停止条件

double f(double x) {
  // 目标函数
  return sin(x) + cos(x);
}

int main() {
  srand(time(NULL));
  double t = L;  // 初始温度
  double x = rand() * 2 * L / RAND_MAX - L;  // 初始解
  double fx = f(x);
  double x_best = x;
  double fx_best = fx;
  for (int i = 0; i < T; i++) {
    for (int j = 0; j < N; j++) {
      double x_new = x + (rand() * 2 - RAND_MAX) * t;  // 猴子跳跃
      if (x_new < -L || x_new > L) {
        continue;
      }
      double fx_new = f(x_new);
      if (fx_new - fx > eps) {
        x = x_new;
        fx = fx_new;
        if (fx_new - fx_best > eps) {
          x_best = x_new;
          fx_best = fx_new;
        }
      } else if (exp((fx_new - fx) / t) * RAND_MAX < rand()) {
        x = x_new;
        fx = fx_new;
      }
    }
    t *= delta;  // 温度衰减
  }
  printf("Best solution: x = %lf, f(x) = %lf\n", x_best, fx_best);
  return 0;
}

以上代码模拟了猴子算法的运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值