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

Python实现霸王龙优化算法(Tyrannosaurus Optimization Algorithm, TROA)(附完整代码)

Python实现霸王龙优化算法(Tyrannosaurus Optimization Algorithm, TROA)(附完整代码)

1.霸王龙优化算法(Tyrannosaurus Optimization Algorithm, TROA)

霸王龙优化算法(Tyrannosaurus Optimization Algorithm, TROA) 是一种受古生物学启发的新型元启发式优化算法,其灵感来源于白垩纪晚期顶级掠食者——霸王龙(Tyrannosaurus rex)的独特捕猎行为与生存策略。该算法通过模拟霸王龙的三种核心行为来指导搜索过程,以解决复杂的全局优化问题。

TROA的核心思想是将优化问题的解空间视为一个广阔的“狩猎场”,每个候选解代表一只霸王龙个体。算法的迭代过程主要模拟以下三种策略:

  1. 视觉捕猎(视觉搜索): 霸王龙拥有极佳的视力。在算法中,这体现为个体在其周围一个较大的视觉半径内进行局部精细搜索,以探索并利用当前区域的潜在最优解。

  2. 追逐猎物(全局探索): 当发现更优的猎物(更优解)时,霸王龙会迅速移动并进行追逐。此过程在算法中促使种群向全局范围内更有希望的区域进行探索,避免过早陷入局部最优,增强了算法的全局探索能力。

  3. 竞争与独占(竞争机制): 霸王龙是顶级掠食者,具有强烈的领地意识。算法通过模拟个体之间的竞争行为(如根据适应度值进行排序和竞争),让更强大的个体(更优解)占据主导地位并保留下来,而较弱的个体则被淘汰或学习强者的位置,从而引导整个种群向全局最优方向进化。

TROA的优势在于其概念新颖、参数较少、结构相对简单,且能有效平衡全局探索(通过追逐和竞争)与局部开发(通过视觉搜索)能力。它已被应用于多个领域,如工程设计、机器学习参数调优和经济调度等,并展现出与其他成熟优化算法(如粒子群优化PSO、遗传算法GA)相竞争的强大性能。该算法为元启发式家族提供了又一个基于“捕食者-猎物”模型的强大工具。

2. Python代码

import numpy as np
import matplotlib.pyplot as plt
import random# 定义目标函数: y = sum((x-0.5)^2)
def objective_function(x):"""计算目标函数值,即适应度值"""return np.sum((x - 0.5) ** 2)# 霸王龙优化算法类
class TyrannosaurusOptimization:def __init__(self, objective_func, dim=10, lower_bound=0, upper_bound=1,pop_size=30, max_iter=100, hunt_step=0.1, territory_range=0.3,attack_prob=0.3, wander_prob=0.2):"""初始化霸王龙优化算法参数参数:- objective_func: 目标函数- dim: 问题维度- lower_bound: 变量下界- upper_bound: 变量上界- pop_size: 种群规模(霸王龙数量)- max_iter: 最大迭代次数- hunt_step: 捕食步长- territory_range: 领地范围- attack_prob: 突袭概率- wander_prob: 漫游概率"""self.objective_func = objective_funcself.dim = dimself.lower_bound = lower_boundself.upper_bound = upper_boundself.pop_size = pop_sizeself.max_iter = max_iterself.hunt_step = hunt_stepself.territory_range = territory_rangeself.attack_prob = attack_probself.wander_prob = wander_prob# 初始化霸王龙位置self.positions = np.random.uniform(low=lower_bound, high=upper_bound,size=(pop_size, dim))# 计算初始适应度self.fitness = np.array([objective_func(pos) for pos in self.positions])# 记录最优解self.best_fitness_history = []self.best_position = Noneself.best_fitness = float('inf')self.update_best()# 记录每个霸王龙的领地中心self.territory_centers = self.positions.copy()def update_best(self):"""更新全局最优解"""current_best_idx = np.argmin(self.fitness)current_best_fitness = self.fitness[current_best_idx]if current_best_fitness < self.best_fitness:self.best_fitness = current_best_fitnessself.best_position = self.positions[current_best_idx].copy()self.best_fitness_history.append(self.best_fitness)def territory_patrol(self):"""领地巡视行为:在领地范围内活动"""for i in range(self.pop_size):# 在领地中心附近随机移动patrol_move = np.random.uniform(-self.territory_range, self.territory_range, self.dim)new_pos = self.territory_centers[i] + patrol_move# 边界处理new_pos = np.clip(new_pos, self.lower_bound, self.upper_bound)new_fitness = self.objective_func(new_pos)# 如果找到更优位置,更新位置和领地中心if new_fitness < self.fitness[i]:self.positions[i] = new_posself.territory_centers[i] = new_pos  # 领地中心随最优位置迁移self.fitness[i] = new_fitnessdef prey_tracking(self):"""猎物追踪行为:向更优解方向移动"""# 找到当前最优个体(最佳猎物位置)best_idx = np.argmin(self.fitness)best_pos = self.positions[best_idx]for i in range(self.pop_size):if i != best_idx:  # 非最优个体执行追踪行为# 计算与最优位置的方向向量direction = best_pos - self.positions[i]distance = np.linalg.norm(direction)if distance > 1e-6:  # 避免除以零direction = direction / distance  # 归一化方向# 向最优位置移动,步长随迭代衰减step = self.hunt_step * (1 - i / self.pop_size)  # 差异化步长new_pos = self.positions[i] + step * directionnew_pos = np.clip(new_pos, self.lower_bound, self.upper_bound)new_fitness = self.objective_func(new_pos)if new_fitness < self.fitness[i]:self.positions[i] = new_posself.fitness[i] = new_fitnessdef surprise_attack(self):"""突袭行为:小概率进行远距离跳跃,增强全局搜索"""for i in range(self.pop_size):if random.random() < self.attack_prob:# 以当前位置为中心,进行较大范围的随机跳跃attack_move = np.random.uniform(-self.territory_range * 2, self.territory_range * 2, self.dim)new_pos = self.positions[i] + attack_movenew_pos = np.clip(new_pos, self.lower_bound, self.upper_bound)new_fitness = self.objective_func(new_pos)# 即使没有更优也有一定概率接受新位置,增加多样性if new_fitness < self.fitness[i] or random.random() < 0.1:self.positions[i] = new_posself.fitness[i] = new_fitnessdef random_wander(self):"""随机漫游:部分个体离开领地探索新区域"""for i in range(self.pop_size):if random.random() < self.wander_prob:# 随机生成新位置,模拟漫游到新区域new_pos = np.random.uniform(low=self.lower_bound, high=self.upper_bound, size=self.dim)new_fitness = self.objective_func(new_pos)# 更新位置和领地self.positions[i] = new_posself.territory_centers[i] = new_posself.fitness[i] = new_fitnessdef run(self):"""运行霸王龙优化算法进行优化"""for iter in range(self.max_iter):# 执行领地巡视self.territory_patrol()# 执行猎物追踪self.prey_tracking()# 执行突袭行为self.surprise_attack()# 执行随机漫游self.random_wander()# 更新最优解self.update_best()# 打印当前迭代信息if (iter + 1) % 10 == 0:print(f"迭代次数: {iter + 1}, 最优适应度: {self.best_fitness:.6f}")return self.best_position, self.best_fitness# 主函数
def main():# 设置随机种子,保证结果可复现np.random.seed(42)random.seed(42)# 定义问题参数dim = 10  # 10维问题lower_bound = 0  # 变量下界upper_bound = 1  # 变量上界# 创建霸王龙优化算法实例troa = TyrannosaurusOptimization(objective_function,dim=dim,lower_bound=lower_bound,upper_bound=upper_bound,pop_size=100,max_iter=500,hunt_step=0.08,territory_range=0.25,attack_prob=0.2,wander_prob=0.15)# 运行优化算法print("开始霸王龙优化算法优化...")best_position, best_fitness = troa.run()# 输出优化结果print("\n优化结果:")print(f"最优位置: {best_position}")print(f"最优适应度值: {best_fitness:.8f}")# 确保中文显示正常plt.rcParams["font.family"] = ["SimHei", "Arial Unicode MS", "sans-serif"]plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题# 绘制迭代曲线plt.figure(figsize=(10, 6))plt.plot(troa.best_fitness_history, 'r-', linewidth=2)plt.xlabel('迭代次数', fontsize=12)plt.ylabel('最优适应度值', fontsize=12)plt.title('霸王龙优化算法迭代曲线', fontsize=14)plt.grid(True)plt.show()# 保持窗口打开plt.ioff()  # 关闭交互模式plt.show()if __name__ == "__main__":main()

3.程序结果

迭代次数: 490, 最优适应度: 0.000316
迭代次数: 500, 最优适应度: 0.000316

优化结果:
最优位置: [0.49791311 0.49131407 0.49140764 0.48941591 0.50290519 0.49458086
0.50239755 0.49844069 0.49821569 0.50117503]
最优适应度值: 0.00031620

4.代码、程序订制(MATLAB、Python)

4.1 各类智能算法

中文名称

英文全称

缩写

出现年份

遗传算法

Genetic Algorithm

GA

1975

粒子群优化算法

Particle Swarm Optimization

PSO

1995

蚁群优化算法

Ant Colony Optimization

ACO

1992

模拟退火算法

Simulated Annealing

SA

1983

免疫优化算法

Immune Optimization Algorithm

IA

1986

贪婪算法

Greedy Algorithm

-

1970

差分进化算法

Differential Evolution

DE

1997

混合蛙跳算法

Shuffled Frog Leaping Algorithm

SFLA

2003

人工蜂群算法

Artificial Bee Colony

ABC

2005

人工鱼群算法

Artificial Fish Swarm Algorithm

AFSA

2002

萤火虫算法

Glowworm Swarm Optimization

GSO

2005

果蝇优化算法

Fruit Fly Optimization Algorithm

FOA

2011

布谷鸟搜索算法

Cuckoo Search

CS

2009

猴群算法

Monkey Algorithm

MA

2008

免疫网络算法

Immune Network Algorithm

aiNet

2000

水滴算法

Intelligent Water Drops Algorithm

IWD

2007

和声搜索算法

Harmony Search

HS

2001

克隆选择算法

Clonal Selection Algorithm

CLONALG

2000

禁忌搜索算法

Tabu Search

TS

1986

爬山算法

Hill Climbing

HC

1940

引力搜索算法

Gravitational Search Algorithm

GSA

2009

细菌觅食优化算法

Bacterial Foraging Optimization

BFO

2002

蝙蝠算法

Bat Algorithm

BA

2010

邻域搜索算法

Neighborhood Search

NS

1960

变邻域搜索算法

Variable Neighborhood Search

VNS

1997

蜜蜂交配优化算法

Honey Bees Mating Optimization

HBMO

2001

文化基因算法

Memetic Algorithm

MA

1989

烟花算法

Fireworks Algorithm

FWA

2010

思维进化算法

Mind Evolutionary Algorithm

MEA

1998

蜻蜓算法

Dragonfly Algorithm

DA

2016

虚拟力场算法

Virtual Force Field Algorithm

VFF

1989

遗传规划

Genetic Programming

GP

1992

鲸鱼优化算法

Whale Optimization Algorithm

WOA

2016

灰狼优化算法

Grey Wolf Optimizer

GWO

2014

狼群算法

Wolf Pack Algorithm

WPA

2007

鸡群优化算法

Chicken Swarm Optimization

CSO

2014

生物地理学优化算法

Biogeography-Based Optimization

BBO

2008

分布估计算法

Estimation of Distribution Algorithm

EDA

1996

帝国竞争算法

Imperialist Competitive Algorithm

ICA

2007

天牛须搜索算法

Beetle Antennae Search Algorithm

BAS

2017

头脑风暴优化算法

Brain Storm Optimization

BSO

2011

人工势场法

Artificial Potential Field

APF

1986

猫群算法

Cat Swarm Optimization

CSO

2006

蚁狮优化算法

Ant Lion Optimizer

ALO

2015

飞蛾火焰优化算法

Moth-Flame Optimization

MFO

2015

蘑菇繁殖优化算法

Mushroom Reproduction Optimization

MRO

2020

麻雀搜索算法

Sparrow Search Algorithm

SSA

2020

水波优化算法

Water Wave Optimization

WWO

2015

斑鬣狗优化算法

Spotted Hyena Optimizer

SHO

2017

雪融优化算法

Snow Ablation Optimization

SAO

2022

蝴蝶优化算法

Butterfly Optimization Algorithm

BOA

2019

磷虾群算法

Krill Herd Algorithm

KHA

2012

黏菌算法

Slime Mould Algorithm

SMA

2020

人类学习优化算法

Human Learning Optimization

HLO

2014

母亲优化算法

Mother Optimization Algorithm

MOA

2023

4.2各类优化问题

各种优化课题

各种优化课题

车间调度

路由路网优化

机场调度

顺序约束项目调度

工程项目调度

双层规划

港口调度

零件拆卸装配问题优化

生产线平衡问题

水资源调度

用电调度

库位优化

公交车发车调度

库位路线优化

车辆路径物流配送优化

武器分配优化

选址配送优化

覆盖问题优化

物流公铁水问题优化

管网问题优化

供应链、生产计划、库存优化

PID优化

库位优化、货位优化

VMD优化

4.3各类神经网络、深度学习、机器学习

序号

模型名称

核心特点

适用场景

1

BiLSTM 双向长短时记忆神经网络分类

双向捕捉序列上下文信息

自然语言处理、语音识别

2

BP 神经网络分类

误差反向传播训练

通用分类任务

3

CNN 卷积神经网络分类

自动提取空间特征

图像、视频分类

4

DBN 深度置信网络分类

多层受限玻尔兹曼机堆叠

特征学习、降维

5

DELM 深度学习极限学习机分类

结合 ELM 与深度架构

复杂分类任务

6

ELMAN 递归神经网络分类

含反馈连接的递归结构

时间序列、语音

7

ELM 极限学习机分类

随机生成隐藏层,快速训练

小样本学习

8

GRNN 广义回归神经网络分类

基于径向基函数回归

函数逼近、时间序列

9

GRU 门控循环单元分类

门控机制简化 LSTM

序列建模

10

KELM 混合核极限学习机分类

结合多核 ELM

高维复杂数据

11

KNN 分类

基于距离的分类方法

模式识别

12

LSSVM 最小二乘法支持向量机分类

最小二乘优化 SVM

小样本分类

13

LSTM 长短时记忆网络分类

门控机制处理长期依赖

语言建模

14

MLP 全连接神经网络分类

多层感知机

通用分类

15

PNN 概率神经网络分类

基于贝叶斯原理

模式识别

16

RELM 鲁棒极限学习机分类

增强鲁棒性的 ELM

噪声数据

17

RF 随机森林分类

多棵决策树集成

高维、非线性数据

18

SCN 随机配置网络模型分类

随机生成网络结构

快速训练

19

SVM 支持向量机分类

寻找最优分类超平面

二分类、多分类

20

XGBOOST 分类

梯度提升决策树

大规模结构化数据

21

ANFIS 自适应模糊神经网络预测

融合模糊逻辑与神经网络

复杂非线性系统建模

22

ANN 人工神经网络预测

多层神经元网络

通用预测任务

23

ARMA 自回归滑动平均模型预测

线性时间序列建模

时间序列预测

24

BF 粒子滤波预测

基于蒙特卡洛采样

动态系统状态估计

25

BiLSTM 双向长短时记忆神经网络预测

双向捕捉序列信息

时间序列、文本预测

26

BLS 宽度学习神经网络预测

增量学习结构

在线学习

27

BP 神经网络预测

误差反向传播训练

通用预测

28

CNN 卷积神经网络预测

自动特征提取

图像、视频预测

29

DBN 深度置信网络预测

多层无监督预训练

特征学习预测

30

DELM 深度学习极限学习机预测

结合 ELM 与深度结构

复杂预测任务

31

DKELM 回归预测

动态核 ELM 回归

时间序列回归

32

ELMAN 递归神经网络预测

递归结构处理时序

时间序列

33

ELM 极限学习机预测

快速训练

小样本回归

34

ESN 回声状态网络预测

储备池计算

时间序列预测

35

FNN 前馈神经网络预测

前向传播

通用预测

36

GMDN 预测

基因表达数据网络建模

生物信息学预测

37

GMM 高斯混合模型预测

多高斯分布建模

密度估计、聚类

38

GRNN 广义回归神经网络预测

径向基函数回归

函数逼近

39

GRU 门控循环单元预测

门控机制简化 LSTM

时间序列预测

40

KELM 混合核极限学习机预测

多核 ELM 回归

高维回归

41

LMS 最小均方算法预测

线性回归的迭代优化

自适应滤波

42

LSSVM 最小二乘法支持向量机预测

最小二乘优化 SVM

回归预测

43

LSTM 长短时记忆网络预测

门控处理长期依赖

时间序列预测

44

RBF 径向基函数神经网络预测

径向基函数逼近

函数拟合

45

RELM 鲁棒极限学习机预测

增强鲁棒性的 ELM

噪声数据回归

46

RF 随机森林预测

决策树集成

回归预测

47

RNN 循环神经网络预测

循环连接处理序列

时间序列预测

48

RVM 相关向量机预测

稀疏贝叶斯学习

回归、分类

49

SVM 支持向量机预测

寻找最优超平面

回归预测

50

TCN 时间卷积神经网络预测

一维卷积处理时序

时间序列预测

51

XGBoost 回归预测

梯度提升决策树

大规模回归


文章转载自:

http://XppYESSc.myxps.cn
http://rM7w6fiA.myxps.cn
http://z9XhnU3v.myxps.cn
http://QW5orhB1.myxps.cn
http://d76Hg5UW.myxps.cn
http://PvgB1mCR.myxps.cn
http://U6J5PHUV.myxps.cn
http://hMU39Cw1.myxps.cn
http://GUM8uMPH.myxps.cn
http://kMaZ9M8R.myxps.cn
http://yXZ4Q7cV.myxps.cn
http://nqaS5V94.myxps.cn
http://VSe2HHNn.myxps.cn
http://ql6R3gud.myxps.cn
http://DVdv9sRf.myxps.cn
http://qHvkt2Ny.myxps.cn
http://6LsYrcr7.myxps.cn
http://VXpBOihL.myxps.cn
http://Sy4reveN.myxps.cn
http://aSRLMdfX.myxps.cn
http://eMxK93qj.myxps.cn
http://yjh6XvZz.myxps.cn
http://Ekx0Spoh.myxps.cn
http://ZONqLwRt.myxps.cn
http://d3WrcRtJ.myxps.cn
http://aqhQNRfS.myxps.cn
http://n0R8rX4H.myxps.cn
http://AmCJMxOL.myxps.cn
http://SdDnX9hD.myxps.cn
http://y4TMJjoz.myxps.cn
http://www.dtcms.com/a/388085.html

相关文章:

  • 弥合安全分析与故障仿真之间差距的方法
  • JavaEE---9.网络原理TCP/IP
  • @Value
  • 安装es、kibana、logstash
  • Leetcode-148.排序链表
  • 基于ETF底仓的网格交易系统实现动态参数优化与动量因子融合
  • C++底层刨析章节三: 函数对象与适配器:STL中的智能操作单元
  • MySQL多表联合查询与数据备份恢复全解析
  • 说说对React的理解?有哪些特性?
  • 深入理解 C 语言指针(二):数组与指针的深度绑定
  • 算法能力提升之树形结构-(线段树)
  • 小白实测:异地访问NAS所用的虚拟局域网使用感受及部署难度?!
  • js校验车架号VIN算法
  • MongoDB 8.0全面解析:性能提升、备份恢复与迁移指南
  • vue3如何配置不同的地址访问不同的项目
  • 苹果软件代码混淆,iOS混淆、iOS加固、ipa安全与合规取证注意事项(实战指南)
  • SQL-约束
  • [torch] 非线性拟合问题的训练
  • ubuntu设置ip流程
  • 【论文阅读】谷歌:生成式数据优化,只需请求更好的数据
  • 【深度学习】什么是过拟合,什么是欠拟合?遇到的时候该如何解决该问题?
  • CSA AICM 国际标准:安全、负责任地开发、部署、管理和使用AI技术
  • AI 赋能教育:个性化学习路径设计、教师角色转型与教育公平新机遇
  • 科技为老,服务至心——七彩喜智慧养老的温情答卷
  • ​​[硬件电路-237]:电阻、电容、电感虽均能阻碍电流流动,但它们在阻碍机制、能量转换、相位特性及频率响应方面存在显著差异
  • 内网Windows系统离线安装Git详细步骤
  • @Component 与 @Bean 核心区别
  • Rsync 详解:从入门到实战,掌握 Linux 数据同步与备份的核心工具
  • ffmpeg解复用aac
  • 数据结构--3:LinkedList与链表