开源代码分享(17)-基于足球队训练算法(Football Team Training Algorithm,FTTA)的组合风速预测

参考文献:

[1]Tian Z, Gai M. Football team training algorithm: A novel sport-inspired meta-heuristic optimization algorithm for global optimization[J]. Expert Systems with Applications, 2024, 245: 123088.

1.算法基本原理

        足球队训练算法(Football team training algorithm,FTTA)是一种全新的元启发式优化方法,其灵感来源于足球队中球员集体训练课的安排与进步过程。该算法通过配合模拟足球课,分阶段训练球员,提高球员的能力,通过模拟足球队的训练模式,不断提高算法的收敛能力,最终得到全局最优解。FTTA具有进化能力强、搜索速度快、寻优能力强的特点。这一成果由Tian等人于2024年发表在中科院1区顶级SCI期刊《Engineering Applications of Artificial Intelligence》上。

        FTTA是一种利用模拟高水平足球训练课上球员行为的方法,以达到训练效果的目的。传统足球训练课通常包括集体训练、小组训练和个人额外训练三个主要部分,每部分的具体内容如下:

1.1集体训练

        在训练开始时,球员将在教练的指导下进行集体训练,教练将首先通过一系列的测试(适应度函数)让球员了解自己的水平。然后球员们将根据自己的水平制定自己的集体训练计划。我们将玩家分为四种不同的类型:追随者、发现者、思想家和波动者。在每次迭代中,玩家将随机改变自己的类型。

        (1)追随者

        追随者是当前最佳玩家的热情追随者,他在每个维度都努力追求最好的玩家,希望达到当前最佳玩家的水平,但由于力量的限制,通常每个维度只能随机移动到最好的玩家。计算公式如下:

其中当前最佳玩家被定义为F_{Best}^k,其中k是迭代次数,F_{Best,j}^k是其在维度j上的值;当前玩家被定义为F_{i}^k,i是其玩家编号,F_{i,j}^k是其在维度j上的值,F_{i,j}^k \text{new}是训练后玩家在维度j上的状态。

        (2)发现者

        发现者比追随者更理性。他们不仅看到最好的球员,也看到最差的球员,所以他们不仅向最好的球员努力,而且尽最大努力避免成为最差的球员。计算公式如下:

其中,当前最差的玩家被定义为,k是迭代次数,其中是其在维度j中的值。F_{i,j}^k \text{new}是训练后玩家在维度j上的状态。

        (3)思想者

        思想家比他们前面的更警觉,他们直接看到最好的玩家和最差的球员之间的差距,努力达到每个维度的差距,等式如下:

在维数j中,是当前最佳玩家和最差玩家之间的差值向量,k是迭代次数。

        (4)波动者

        波动者拒绝向任何人学习,他们自己做训练,所以状态会在一定程度上波动。当然,随着训练次数(迭代)的增加。玩家状态的波动越来越小,我们对玩家状态的波动的定义如下:

其中,t (k)是具有t分布的随机数,其自由度是当前的迭代次数,随着自由度的增加,t分布的概率接近中间值(0)变得越来越高,和两端的分布逐渐减少,这将越来越接近正态分布。因此,随着迭代次数的增加,波动的程度会越来越小,并逐渐从全局搜索转向局部搜索。

        集体训练的过程如下图所示:

1.2 分组训练

        集体训练结束后,足球训练过程达到了分组训练的阶段,教练根据球员的特点将球员分为四类(每个维度都是一个特征值):前锋、中场、后卫和守门员。在组训练中,我们使用MGEM自适应聚类方法(MixGaussEM),通过聚类方法模拟教练的行为,并根据其自身的特点将人群分为四类。分类的具体形式如下:

        在教练完成分组后,球员将学习或与组中的其他球员交流。我们将群体训练定义为三种最佳状态:最优学习、随机学习和随机交流。我们将学习概率定义为pstody,通信概率为pcomm,玩家在每次迭代中随机选择状态。

        (1)最优学习

        在每个维度中,玩家都有一定的概率直接学习群体中最佳玩家的能力值。该公式的定义如下:

式中,F^{k, team_l}_{best}为第L组中最优秀的选手,k为迭代次数,teaml代表第l组,F^{k, team_l}_{best,j}为第l组中最优秀选手的第j维,F^{k, team_l}_{i,j}\text{new}为第j维选手经过最优学习后的状态。

        (2)随机学习

        在每个维度中,玩家都有一定的概率直接学习群体中任何一个随机玩家的能力值。该公式的定义如下:

式中,F^{k, team_l}_{Random}为第l组中的随机参与者,k为迭代次数,teaml代表第l组,F^{k, team_l}_{Random,j}为第l组中随机参与者的第j维,F^{k, team_l}_{i,j}\text{new}为随机学习后参与者在第j维中的状态。

        (3)随机交流

        在训练中,学习只是一部分,两名队员之间的交流对于能力的提高更为重要。在每个维度中,玩家都有一定的概率与小组中的任何玩家进行交流。

        当rand≤pcomm时,公式定义如下:

        当rand > pcomm时,公式定义如下:

        (4)随机误差

        我们假设在小组训练过程中,有一定的发生错误的概率,也就是说,他们意外地学习了其他维度的内容。这种情况发生的可能性非常低,但它是真实的和客观的。我们将误差概率定义为perror。

        分组训练的流程如下:

1.3.个人额外训练

        在小组训练结束后,需要重新计算新的适应度值,用较好的适应度值代替较差的适应度值来更新球员的状态。更新后,教练会选出最好的球员,让他进行练习,使他更好,使他能更好地驱动他人的训练状态,训练公式如下:

        柯西-高斯联合分布用于描述个体的额外训练,k为迭代次数。选择高斯-柯西分布的原因是,每个人的水平一般都不是高的早期训练,所以最好的球员有一个更大的概率得到更大的晋升,此时,柯西分布函数占很大比例,可以有效地为球员提供一个大范围的改进,这有利于全球搜索。随着迭代次数的增加,玩家能力的提高变得越来越困难,此时高斯分布所占比例相对较大,玩家的提升范围逐渐减小,更有利于局部搜索。

1.4算法流程图和伪代码

        FTTA算法流程图如下:

        算法的伪代码如下:

2.算法测试结果

3.基于FTTA算法的组合风速预测模型

        所提的风速预测系统主要由基于FTTA的数据预处理和组合预测(CP)两部分组成。

3.1 数据预处理

        第一部分是数据预处理,主要由变分模式分解(VMD)和FTTA组成。FTTA用于优化惩罚因子(α)和分解层 (k)的VMD,以获得最佳的数据预处理结果。我们将分解后的IMF分量中波动最大的分量视为白噪声,并将其删除,并重组其他IMF分量t o得到去噪后的时间序列数据。

        目标函数: FTTA-VMD模型是一种先进的数据预处理模型。在该模型中,FTTA的适应度函数为包络熵的最小值,包络熵表示t 他具有原始信号的稀疏特征。当IMF中噪声越多,特征信息越少时,包络熵越大,而包络熵则越小。

        在信号x (i)中,包络熵Ep的计算公式如下:

3.2组合预测模型

        第二部分是组合预测模型,主要由ARIMA(Ray et al.,2023)、GRU(Huang & Qian,2023)、CNN(Sagar等)四种预测方法组成 l.,2024)、BP(Du等人,2024)和基于FTTA的无约束加权算法。每种预测方法的原理都是不同的(三个神经网络的原理不同 的方法)。在不同的数据集中,有些方法的预测结果较好,而有些方法的预测结果较差。因此,为了保证预测的准确性和稳定性,FTTA-CP (C 提出了综合预测模型。得到预测结果后,通过统计指标判断各模型的预测性,并进行无约束加权t hrough FTTA对精度差的模型权重小,对精度高的模型权重大,从而实现预测度的优化。

        目标函数:作为一种组合预测模型,FTTA-CP模型的目标函数是使预测精度(MAPE值)最大化,最终结果是最优算法 每个预测模型的Ht(x(1)、x (2)、x (3)、x)(4))。

        在传统的约束加权模型中,每个模型的权值在0到1之间,所有权值的和要求为1,但在FTTA-CP中,采用无约束加权方法 ,我们分别设置了-5和5的上、下限。没有要求权重的和或权重的正值和负值,所以可以得到更好的结果(Tian & W ang, 2022).

        基于FTTA算法的组合风速预测的流程图如下:

3.3结果分析

4.matlab代码

        FTTA算法代码获取链接如下:

【免费】足球队训练算法(FootballTeamTrainingAlgorithm,FTTA)的(matlab代码)资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/796084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】Redis 生产问题。如何确保缓存和数据库数据的一致性? 常见的缓存更新策略?

目录 缓存穿透 缓存穿透解决办法 缓存击穿 击穿解决办法? 缓存穿透和缓存击穿的区别? 缓存雪崩 雪崩解决办法? 如何确保缓存和数据库数据的一致性? 常见的缓存更新策略? 缓存穿透 定义:缓存穿透说…

Android APP加固利器:深入了解混淆算法与混淆配置

Android APP 加固是优化 APK 安全性的一种方法,常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 Android APP 加固的具体实现方式。 混淆代码 使用 ipaguard工具可以对代码进行混淆,使得反编译出来的代码很难阅读和理解&#xff…

阿里巴巴蔡崇信:中国AI追赶神速,制造业霸主地位无可撼动!

快科技4月5日讯,阿里巴巴集团创始人兼董事长蔡崇信近日就AI技术领域及全球制造业形势发表看法。他认为,尽管中国在AI技术方面与美国有一定差距,但中国的追赶速度非常快。 AI-321 | 专注于AI工具分享的网站 AI工具集 | 人工智能工具箱 | 全球…

金三银四面试题(十五):Java基础问题(6)

这部分面试题多用于面试的热身运动,对很多找实习和准备毕业找工作的小伙伴至关重要。 HashMap与ConcurrentHashMap 都是key-value 形式的存储数据; HashMap 是线程不安全的,ConcurrentHashMap 是JUC 下的线程安全的; HashMap 底层…

【单片机】PMS5003,PM2.5传感器数据读取处理

文章目录 传感器介绍数据处理解析pm2.5的代码帮助、问询 传感器介绍 PMS5003是一款基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集 并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而 换算成为质量浓度,并以通用数字接口形式输出。本传感器可…

综测仪MT8862A控制方法

实现自动化控制,本次为大家讲解综测仪MT8862A的控制逻辑。 新建底层控制逻辑 在文件basis_contorl.py中写入仪器控制底层代码,代码如下: import tkinter.messagebox import pyvisaclass InstrumentControl(object):inst Nonedef __init__(…

【学习总结】Linux tmux 使用

1. 使用背景 本地连接服务器 AutoDL 训练模型时,使用 ssh 连接时: ssh -p xxxxx rootconnect.westc.gpuhub.com输入密码登录成功后 为了训练过程中本地和服务器始终连接,可以使用 tmux 终端复用工具开启后台训练 2. 安装 ~# sudo apt-ge…

CKA 基础操作教程(二)

Kubernetes Deployment 理论学习 Kubernetes Deployment (部署)是一种 Kubernetes 资源对象,用于定义和管理容器化应用程序的部署和更新。Deployment 提供了一种声明性的方式来定义应用程序的期望状态,并负责确保所需数量的 Pod…

聚簇索引与非聚簇索引b+树实现的区别

文章目录 聚簇索引非聚簇索引B树中聚簇索引的查找(匹配)逻辑B树中非聚簇索引的查找(匹配)逻辑 聚簇索引 特点: 索引和数据保存在同一个B树中 页内的记录是按照主键的大小顺序排成一个单向链表 。 页和页之间也是根据…

算法设计与分析实验报告c++java实现(矩阵链连乘、投资问题、完全背包问题、旅行商问题、数字三角形)

一、 实验目的 1.加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 用动态规…

力扣回溯篇

文章目录 46.全排列78.子集17.电话号码的字母组合39.组数总和79.单词搜索131.分割回文子串 46.全排列 给定一个不含重复数字的数组 nums ,返回其所有可能的全排列 。你可以按任意顺序返回答案。 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],…

Linux:IO多路转接之poll

文章目录 select的缺点pollstruct pollfd解决缺点的方式 代码实现 本篇总结的是poll的相关内容,在总结poll的内容前,先回顾一下select的缺点 select的缺点 select的缺点也比较明显 等待的fd是有上限的,在我们当前这个版本来说,…

【AOSP】手把手教你编译和调试AOSP源码

一、下载AOSP源码 在开始之前,我们先安装编译AOSP需要的一些系统基本依赖,如下命令 sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 lib32ncurses5-dev x11proto…

【图论】【分类讨论】LeetCode3017按距离统计房屋对数目

本文涉及的知识点 图论 分类讨论 本题同解 【差分数组】【图论】【分类讨论】【整除以2】3017按距离统计房屋对数目 LeetCode3017按距离统计房屋对数目 给你三个 正整数 n 、x 和 y 。 在城市中,存在编号从 1 到 n 的房屋,由 n 条街道相连。对所有 …

Centos7下docker安装jenkins【使用docker-compose图文教程】

个人记录 前置条件:安装Docker与Docker-compose Centos7安装Docker与Docker-compose【图文教程】 查看jenkins最新的版本 https://www.jenkins.io/download/ 配置docker-compose.yml vim docker-compose.yml按i进行编辑模式,粘贴如下内容。把image里…

11-pyspark的RDD的变换与动作算子总结

目录 前言 变换算子动作算子 前言 一般来说,RDD包括两个操作算子: 变换(Transformations):变换算子的特点是懒执行,变换操作并不会立刻执行,而是需要等到有动作(Actions)…

java(7)之跳转语句

1、break跳转语句 说到break其实也不是跳转,它更像是一个终结语句,常用于在循环语句需要停止出现例如 while(){ if(){ break; }} 这样的形式或者 switch(){ case…

蓝桥 python笔记14——KMP、字符串哈希、最长回文子串、字典树

目录 KMP 字符串哈希 最长回文子串 字典树 KMP 模式匹配问题: KMP算法: 用动规的思想求Next数组:如果后缀的i位置前缀的j位置,Next[i1]j1;如果后缀的i位置!前缀的j位置,那就用KMP算法,令jNe…

OpenCV图像处理——基于背景减除实现多目标追踪

1. 基本运动检测 基本运动检测方法的核心在于计算视频帧之间的差异,或者是将某一帧设定为“背景”,然后将其与后续的帧进行比较。这个过程在概念上非常简单:首先保存视频的第一帧作为背景参考,随后将这一帧与新接收到的帧进行逐像…

肖恩带你学C语言·文件操作(上)

1. 为什么使用文件 如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到上次程序的数据的,如果要将数据进行持久化的保存&…