当前位置: 首页 > news >正文

Rastrigin函数简介

前言

提醒:
文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。
其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。

内容由AI辅助生成,仅经笔者审核整理,请甄别食用。

文章目录

  • 前言
      • 1. 函数定义
      • 2. 函数特性
      • 3. 常见定义域
      • 4. 应用场景
      • 5. 可视化python代码(三维)


Rastrigin函数是在优化领域中非常经典的一个测试函数,常被用于评估优化算法的性能,如遗传算法、粒子群优化算法等。以下是关于它的详细介绍:

1. 函数定义

Rastrigin函数是一个多变量函数,其一般形式为:
f(x)=A⋅n+∑i=1n[xi2−A⋅cos⁡(2πxi)]f(\mathbf{x}) = A \cdot n + \sum_{i = 1}^{n} \left[ x_i^2 - A \cdot \cos(2\pi x_i) \right] f(x)=An+i=1n[xi2Acos(2πxi)]
其中:

  • x=[x1,x2,⋯,xn]\mathbf{x} = [x_1, x_2, \cdots, x_n]x=[x1,x2,,xn]是一个 nnn 维的向量,表示函数的输入变量,也就是优化问题中的决策变量。
  • nnn是变量的维度,即向量 x\mathbf{x}x 的长度,代表优化问题的自由度,比如在二维空间中 n=2n = 2n=2,三维空间中 n=3n = 3n=3 等。
  • AAA是一个常数,通常取 A=10A = 10A=10,用于调整函数的形态和复杂度。

A=10A = 10A=10 时,函数形式变为:
f(x)=10⋅n+∑i=1n[xi2−10⋅cos⁡(2πxi)]f(\mathbf{x}) = 10 \cdot n + \sum_{i = 1}^{n} \left[ x_i^2 - 10 \cdot \cos(2\pi x_i) \right] f(x)=10n+i=1n[xi210cos(2πxi)]

2. 函数特性

  • 全局最小值:函数的全局最小值为 f(x∗)=0f(\mathbf{x}^*) = 0f(x)=0,当且仅当 x1=x2=⋯=xn=0x_1 = x_2 = \cdots = x_n = 0x1=x2==xn=0 时取得。这是我们使用各种优化算法试图找到的目标值。
  • 多模态性:Rastrigin函数是一个典型的多模态函数,在其定义域内存在大量的局部最小值。以二维情况为例,它的函数图像看起来像一个布满小坑的地形,每个小坑都对应一个局部最小值。 数学上,对函数求偏导数可以找到局部极值点。对于 f(x)f(\mathbf{x})f(x) 中的第 iii 个变量 xix_ixi 求偏导数:
    ∂f∂xi=2xi+20πsin⁡(2πxi)\frac{\partial f}{\partial x_i} = 2x_i + 20\pi \sin(2\pi x_i) xif=2xi+20πsin(2πxi)
    令偏导数等于0,即 2xi+20πsin⁡(2πxi)=02x_i + 20\pi \sin(2\pi x_i) = 02xi+20πsin(2πxi)=0,解这个方程可以得到局部极值点的 xix_ixi 坐标。但由于正弦函数的周期性和非线性,方程有多个解,也就意味着存在多个局部最小值。
  • 周期性:函数中的 cos⁡(2πxi)\cos(2\pi x_i)cos(2πxi) 项具有周期性,周期为 T=1T = 1T=1。这使得函数在不同的周期内呈现相似的形态,增加了优化的难度,因为优化算法可能会在不同周期内找到相似的局部最小值,而难以跳出局部最优去寻找全局最优。
  • 可扩展性:该函数可以很方便地扩展到更高维度,随着维度 nnn 的增加,局部最小值的数量会呈指数增长,优化问题的难度也会急剧上升。

3. 常见定义域

在实际应用中,Rastrigin函数通常在一个有限的定义域内进行优化。常见的定义域设置为:
xi∈[−5.12,5.12],i=1,2,⋯,nx_i \in [-5.12, 5.12], \quad i = 1, 2, \cdots, n xi[5.12,5.12],i=1,2,,n
这个定义域是为了在一个合理的范围内评估优化算法的性能,避免因定义域过大或过小对算法效果产生不合理的影响。

4. 应用场景

  • 优化算法测试:由于Rastrigin函数具有多模态、复杂的局部最小值分布等特性,是测试和比较各种优化算法性能的理想选择。通过在该函数上运行优化算法,可以评估算法的全局搜索能力、收敛速度、避免陷入局部最优的能力等。
  • 工程优化问题的近似模型:在一些复杂的工程优化场景中,如机械设计、电子电路设计等,目标函数可能非常复杂,难以直接求解。可以使用Rastrigin函数这样的测试函数来近似模拟目标函数的复杂特性,帮助研究人员开发和验证优化策略。

5. 可视化python代码(三维)

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
import matplotlib# 强制使用Windows系统预装的中文字体
matplotlib.rcParams["font.family"] = ["SimHei", "Microsoft YaHei"]  # 优先使用黑体,其次微软雅黑
matplotlib.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题# 定义Rastrigin函数
def rastrigin(x):n = x.shape[0]return 10 * n + np.sum([xi**2 - 10 * np.cos(2 * np.pi * xi) for xi in x])# 生成数据
x = np.linspace(-5.12, 5.12, 100)
y = np.linspace(-5.12, 5.12, 100)
X, Y = np.meshgrid(x, y)
Z = np.zeros_like(X)
for i in range(X.shape[0]):for j in range(X.shape[1]):Z[i, j] = rastrigin(np.array([X[i, j], Y[i, j]]))# 绘图
fig = plt.figure(figsize=(12, 5))
ax1 = fig.add_subplot(121, projection='3d')
surf = ax1.plot_surface(X, Y, Z, cmap=cm.coolwarm, linewidth=0, antialiased=True)
ax1.set_title('Rastrigin函数3D曲面图')
ax1.set_xlabel('x1')
ax1.set_ylabel('x2')
ax1.set_zlabel('函数值')
fig.colorbar(surf, ax=ax1)ax2 = fig.add_subplot(122)
contour = ax2.contourf(X, Y, Z, levels=50, cmap=cm.coolwarm)
ax2.set_title('Rastrigin函数等高线图')
ax2.set_xlabel('x1')
ax2.set_ylabel('x2')
fig.colorbar(contour, ax=ax2)plt.tight_layout()
plt.show()

运行结果
在这里插入图片描述
matlab运行结果:在这里插入图片描述


http://www.dtcms.com/a/302654.html

相关文章:

  • Revo Uninstaller Pro专业版领取:2025最佳Windows软件卸载工具
  • org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path
  • 数据结构之顺序表链表栈
  • 设计模式(十六)行为型:解释器模式详解
  • LeetCode 2044题:统计按位或能得到最大值的子集数目(原创)
  • RabbitMQ概念与管理端配置说明
  • Ubuntu “apt”安装
  • 【Apache Tomcat】
  • Thymeleaf语法大全:30个实用示例
  • UE5 UI自适应 DPI缩放
  • 分布式微服务--核心组件与架构关系(一)
  • 前端面试题--副本
  • 【n8n教程笔记——工作流Workflow】文本课程(第一阶段)——5.7 调度工作流 (Scheduling the workflow)
  • <PLC><西门子><modbusTCP>在西门子S7-1200系列PLC中,如何设置modbusTCP通讯?
  • 深度学习核心模型架构解析:Transformer自注意力机制与Query-Key-Value投影的向量空间几何解释
  • 【GitHub Workflows 基础(一)】认识 .github/workflows/ 下的多个工作流
  • ubuntu qt环境下出现No suitable kits found解决方案
  • 国产化PDF处理控件Spire.PDF教程:Java 提取 PDF 图片,高质量提取与图片过滤技巧
  • ros2的package.xml和rosdep
  • 青少年编程高阶课程介绍
  • LangGraph智能体(天气和新闻助手)开发与部署
  • 嵌入式Linux:注册线程清理处理函数
  • 墨者:SQL过滤字符后手工绕过漏洞测试(万能口令)
  • 婚纱摄影管理系统(发送邮箱、腾讯地图API、物流API、webSocket实时聊天、协同过滤算法、Echarts图形化分析)
  • Android15广播ANR的源码流程分析
  • 【Unity】Application类常见路径一览表
  • 05 OpenCV--图像预处理之图像轮廓、直方图均衡化、模板匹配、霍夫变化、图像亮度变化、形态学变化
  • Jenkins流水线部署+webhook2.0
  • Rust/Tauri 优秀开源项目推荐
  • Flutter渲染引擎:Impeller和Skia