【智能算法】骑手优化算法(ROA)原理及实现

news2024/11/19 17:32:40

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献


1.背景

2018年,D Binu等人受到骑手群体竞赛赢得比赛行为启发,提出了骑手优化算法(Rider Optimization Algorithm, ROA)。
在这里插入图片描述
在这里插入图片描述

2.算法原理

2.1算法思想

ROA基于骑手群体竞赛协同合作启发,探究如何赢得比赛,ROA主要分为四类:

  • 绕行骑手(Bypass rider):绕过主要路线到达目标,这意味着绕行骑手不跟随领头骑手(适应度最好) 避免陷入局部解
  • 跟随骑手(Follower):跟随骑手是指大部分依赖或跟随领头骑手
  • 超车骑手(Overtaker):按照领头骑手和自己位置前进
  • 冲刺骑手(Attacker):根据其他骑手的位置以最大速度到达目标

在这里插入图片描述

2.2算法过程

群体G分为绕行骑手B,跟随骑手F,超车骑手O,冲刺骑手A:
R = B + F + O + A B = F = O = A = R / 4 (1) R=B+F+O+A\\ B=F=O=A=R/4\tag{1} R=B+F+O+AB=F=O=A=R/4(1)
骑手参数初始化,辆在时刻T的转向角T为:
T t = { T i , j t } ; 1 ≤ i ≤ R ; 1 ≤ j ≤ Q (2) T_t=\{T_{i,j}^t\};\quad1\leq i\leq R; 1\leq j\leq Q\tag{2} Tt={Ti,jt};1iR;1jQ(2)
表达式为:
T i , j = { θ i ; if j = 1 T i , j − 1 + φ ; if j ≠ 1 & T i , j − 1 + φ ≤ 360 T i , j − 1 + φ − 360 ; otherwise (3) T_{i,j}=\begin{cases}\theta_i;&\text{if} j=1\\T_{i,j-1}+\varphi;&\text{if} j\neq1 \& T_{i,j-1}+\varphi\leq360\\T_{i,j-1}+\varphi-360;&\text{otherwise}\end{cases}\tag{3} Ti,j= θi;Ti,j1+φ;Ti,j1+φ360;ifj=1ifj=1&Ti,j1+φ360otherwise(3)
其中θi是骑手车辆的位置角,φ是坐标角。骑手车辆的位置角度取决于骑手人数和360°的最大角度:
θ i = i ∗ 36 0 ∘ R (4) \theta_i=i*\frac{360^\circ}{R}\tag{4} θi=iR360(4)
其中R是乘客的数量。坐标角有助于确定给定的转向角:
φ = 360 Q (5) \varphi=\frac{360}{Q}\tag{5} φ=Q360(5)
然后初始化与车辆相关的齿轮、油门、刹车等三个参数。在一个特定的组中,骑手的车辆的齿轮表示为:
E = { E i } ; 1 ≤ i ≤ R (6) E=\{E_i\};\quad1\leq i\leq R\tag{6} E={Ei};1iR(6)
其中Ei是第i个骑手的车辆的齿轮。在时间t, Et i从集合{0,1,2,3,4}中取一个值。Ei的初始值设为零。同样,第二个参数,即车辆的油门初始化为:
e = { e i } ; 1 ≤ i ≤ R (7) e=\{e_i\};\quad1\leq i\leq R\tag{7} e={ei};1iR(7)
其中ei表示车手车辆的油门,其取值范围为0到1。在时刻t, ei的初始值被设为零。以同样的方式,车辆中的制动器表示为:
K = { K i } ; 1 ≤ i ≤ R (8) K=\{K_i\};\quad1\leq i\leq R\tag{8} K={Ki};1iR(8)
其中Ki为第i位骑行者车辆的制动,取值范围为[0,1]。Ki的初始值设置为1。在到达目标的路上,骑手根据空间中的两个边界值调整车辆(汽车/汽车)的速度。因此,骑手可以驾驶的最大速度为:
V max ⁡ i = X U i − X L i T O F F (9) V_{\max}^i=\frac{X_U^i-X_L^i}{T_{\mathrm{OFF}}}\tag{9} Vmaxi=TOFFXUiXLi(9)
车手的齿轮速度限制计算为:
V i E = V max ⁡ i ∣ E ∣ (10) V_i^E=\frac{V_{\max}^i}{|E|}\tag{10} ViE=EVmaxi(10)
初始化骑手组和参数后,计算每个骑手的成功率。成功率根据骑手位置与目标位置之间的距离来表示:
r i = 1 ∥ X i − L T ∥ (11) r_i=\frac{1}{\|X_i-L_T\|}\tag{11} ri=XiLT1(11)
由于绕行骑手绕过公共路径,不跟随领头骑手,因此该集合的位置更新是随机的,表示为:
X t + 1 B ( i , j ) = δ [ X t ( η , j ) ∗ β ( j ) + X t ( ξ , j ) ∗ [ 1 − β ( j ) ] ] (12) X_{t+1}^{B}(i,j)=\delta[X_{t}(\eta,j)*\beta(j)+X_{t}(\xi,j)*[1-\beta(j)]]\tag{12} Xt+1B(i,j)=δ[Xt(η,j)β(j)+Xt(ξ,j)[1β(j)]](12)
跟随骑手跟随领头骑手的位置更新自己的位置,使骑手能够快速有效地到达目标:
X t + 1 F ( i , k ) = X L ( L , k ) + [ cos ⁡ ( T i , k t ) ∗ X L ( L , k ) ∗ d i t ] (13) X_{t+1}^F(i,k)=X^L(L,k)+\left[\cos\left(T_{i,k}^t\right)*X^L(L,k)*d_i^t\right]\tag{13} Xt+1F(i,k)=XL(L,k)+[cos(Ti,kt)XL(L,k)dit](13)
k为坐标选择器,XL为领跑骑手的位置,L为领跑骑手的指数,Tt i,k为第i位骑手在第k个坐标上的转向角度,dt i为第i位骑手要行驶的距离。这个距离是用骑手的速度乘以离开时间的比率来测量:
d i t = v i t ∗ ( 1 / T O F F ) (14) d_i^t=v_i^t*(1/T_\mathrm{OFF})\tag{14} dit=vit(1/TOFF)(14)
其中vt i是骑手i的速度,TOFF是脱离时间。骑手的速度与车辆的速度和骑手参数有关:
v i t = 1 3 [ E i t ∗ V i E + V max ⁡ i ∗ e i t + ( 1 − K i t ) ∗ V max ⁡ i ] (15) v_i^t=\frac{1}{3}\bigl[E_i^t*V_i^E+V_{\max}^i*e_i^t+(1-K_i^t)*V_{\max}^i\bigr]\tag{15} vit=31[EitViE+Vmaxieit+(1Kit)Vmaxi](15)
坐标选择器是根据准时概率选择:
P O N t = ( t T O F F ) ∗ Q (16) P_{\mathrm{ON}}^t=\left(\frac{t}{T_{\mathrm{OFF}}}\right)*Q\tag{16} PONt=(TOFFt)Q(16)
超车骑手位置更新:
X t + 1 O ( i , k ) = X t ( i , k ) + [ D t I ( i ) ∗ X L ( L , k ) ] (17) X_{t+1}^{O}(i,k)=X_{t}(i,k)+\left[D_{t}^{I}(i)*X^{L}(L,k)\right]\tag{17} Xt+1O(i,k)=Xt(i,k)+[DtI(i)XL(L,k)](17)
D为当前个体的方向指示器:
D t I ( i ) = [ 2 1 − log ⁡ ( S t R ( i ) ) ] − 1 (18) D_t^I(i)=\left[\frac{2}{1-\log\left(S_t^R(i)\right)}\right]-1\tag{18} DtI(i)=[1log(StR(i))2]1(18)
其中SRt (i)为相对成功率,超车手的相对成功率由其适应度值与种群内最差个体的适应度值之比确定:
S t R ( i ) = r t ( i ) max ⁡ i = 1 R r t ( i ) (19) S_t^R(i)=\frac{r_t(i)}{\max_{i=1}^Rr_t(i)}\tag{19} StR(i)=maxi=1Rrt(i)rt(i)(19)
冲刺骑手位置更新:
X t + 1 A ( i , j ) = X L ( L , j ) + [ cos ⁡ ( T i , j t ) ∗ X L ( L , j ) ] + d i t (20) X_{t+1}^A(i,j)=X^L(L,j)+\left[\cos\left(T_{i,j}^t\right)*X^L(L,j)\right]+d_i^t\tag{20} Xt+1A(i,j)=XL(L,j)+[cos(Ti,jt)XL(L,j)]+dit(20)

伪代码

在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Binu D, Kariyappa B S. RideNN: A new rider optimization algorithm-based neural network for fault diagnosis in analog circuits[J]. IEEE Transactions on Instrumentation and Measurement, 2018, 68(1): 2-26.

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

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

相关文章

[ESP32]:TFLite Micro推理CIFAR10模型

[ESP32]:TFLite Micro推理CIFAR10模型 模型训练 数据集处理 from keras.datasets import cifar10 from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequential, load_model, Model from keras.layers import Input, Dense, …

mac用Homebrew安装MySQL并配置远程登录

1. 简介 MySQL 是一个开源的关系型数据库管理系统(RDBMS),由瑞典 MySQL AB 公司开发,后被 Oracle 公司收购。MySQL 使用 SQL(Structured Query Language)作为查询语言,并提供了强大的功能和性能…

AG32 MCU在触摸屏的应用(AGM FPGA/MCU行业应用)

传统的屏驱MCU常见应用于洗衣机、空调、空调面板、仪器仪表等人机交互界面显示场景中,通常是以段码的形式显示设备运转的时间、温度、测量结果等简单运行数据,随着人机交互需求丰富化,智能家居设备、摩托车、电动车等产品也逐步增加了屏幕显示…

解决Milvus官网提供的单机版docker容器无法启动,以及其它容器进程与Milvus容器通信实现方案【Milvus】【pymilvus】【Docker】

文章目录 问题预备知识方案获取pymilvus获取milvus 实例多容器通信 问题 我的需求是做混合检索单机版可以满足,要走Docker容器部署,还需要和另一个容器中的程序做通信。官方文档提供的Milvus安装启动Milvus方案,见文档:传送门 我…

为什么要学音视频?

一直都在说“科技改变生活”,现实告诉我们这是真的。 随着通信技术和 5G 技术的不断发展和普及,不仅拉近了人与人之间的距离,还拉近了人与物,物与物之间的距离,万物互联也变得触手可及。 基于此背景下,音…

Eclipse 如何设置 Maven 下载源代码和文档

在 Eclipse 的 Windows 菜单下选择属性。 然后在 Maven 选项下,选择下载包的源代码和文档。 保存应用即可。 Eclipse 如何设置 Maven 下载源代码和文档 - Java - iSharkFly在 Eclipse 的 Windows 菜单下选择属性。 然后在 Maven 选项下,选择下载包的源代…

Linux异步io机制 io_uring

io_uring作为2019年的后起之秀,为linux异步网络编程新增一把倚天大剑,让我们简单学习一下! 数据结构: a. sq (submition queue):提交队列,一个存放待执行事件的环形队列 b. cq (completion queue): 完成…

自定义大整数类(初次版本)

例子: #include "X:\Work\Share\CCode\CPlatform\MathExt\_MathExt_out.h"using namespace lf; using namespace std;int main() {_Integer i1 _t("12345678989764581381214575686787987979234234354364");_Integer i2 _t("1234567898…

SpringCloud02(远程调用Feign,网关Gateway,配置中心Nacos)

目录 一、远程调用Feign【要会用】 1. Feign简介 1 什么是Feign 2 准备基础代码 2. Feign入门【重点】 步骤 实现 测试 3. Feign配置Ribbon 1 说明 2 配置 4. Feign配置日志 1 说明 2 步骤 5. Feign使用优化 1 说明 2 步骤 6. 小结 二、网关Gateway 1. 网关…

基于深度学习神经网络的AI图片上色DDcolor系统源码

第一步:DDcolor介绍 DDColor 是最新的 SOTA 图像上色算法,能够对输入的黑白图像生成自然生动的彩色结果,使用 UNet 结构的骨干网络和图像解码器分别实现图像特征提取和特征图上采样,并利用 Transformer 结构的颜色解码器完成基于视…

xfce4 panel 不能显示QQ,钉钉的状态图标

有一段时间不能显示了,之前刚装完系统的时候很长时间内都是好的,所以刚开始肯定是支持显示这些状态图标的。就是因为不能显示的原因,所以还装了lxQt桌面,这个桌面确实不错。不过还是有时会怀念xfce4,想看看能不能解决这…

面经总结(二)(数据库)

数据库常识: 1、数据库系统包含什么? 包含了数据库、数据库管理系统、数据库管理员和应用程序。 数据库(DB):顾名思义是存放数据的仓库,实现数据的持久化。 数据库管理系统(DBMS):类似于操作系…

利用ollama和open-webui本地部署通义千问Qwen1.5-7B-Chat模型

目录 1 安装ollama 2 安装open-webui 2.1 镜像下载 3 配置ollama的模型转换工具环境 3.1 下载ollama源码 3.2 下载ollama子模块 3.3 创建ollama虚拟环境 3.4 安装依赖 3.5 编译量化工具 7 创建ollama模型 8 运行模型 参考文献: 1 安装ollama curl -fsSL …

(GEE)2000-2020年黄河流域时序渐变图及高程模型计算 JavaScript版

文章目录 一. 选取目标区域二. NDVI实现三. 高程模型DEM实现四. 时序图五. 植被覆盖类型六. 参考文献 首先推荐吴秋生老师团队开源的便捷构建网站:适用于地理空间应用的Streamlight 吴秋生老师团队的工具请自行探索。本文讲解基于GEE云开发平台实现,基于…

关于springboot内置tomcat最大请求数配置的一些问题

前言 springboot内置了tomcat。那么一个springboot web应用,最大的请求链接数是多少呢?很早以前就知道这个是有个配置,需要的时候,百度一下即可。但,事实并非如此,有几个问题我想大多数人还真不知道。比如…

机械图纸管理系统,如何选择适合的机械图纸管理系统?

机械图纸管理系统是一种专门用于管理和跟踪机械制造过程中的图纸、设计文件和相关信息的软件系统。例如:彩虹图纸管理系统,这种系统能够有效地整合和管理工程图纸、零部件清单、技术规范、工艺流程等各种数据,为企业提供全面的图纸管理和协作…

typescript:vscode的settings配置文件配置ts语法提示

typescript:vscode的settings配置文件配置ts语法提示 1 找到vscode左下角的齿轮按钮 2 点击Settings(或者快捷键ctrl,): 点击右上角的Open Settings(JSON)按钮打开配置文件: 或者ctrlshiftp,搜索settings&…

嵌入式全栈开发学习笔记---Linux基本命令1

目录 cd加路径 相对路径是什么 绝对路径是什么 cd后面没有路径 cd- ls -l ls -a ls -al ls加路径 Linux的命令是数不清的,就像很多应用软件一样,随时都有可能被开发出来。 但是我们目前阶段只需要掌握基本的命令就可以了。 上一篇博文中我已经…

元宇宙APP搭建重点,会用到哪些三方服务?

元宇宙APP的搭建是一个综合性的项目,涉及到众多关键要素和第三方服务。以下是一些元宇宙APP搭建的重点,以及可能用到的第三方服务: 一、搭建重点 技术框架的选择与搭建:元宇宙APP需要稳定、高效的技术框架来支撑其运行。这包括前…

插入排序,搞起来,一路狂奔,数组插入

一点喽 目录 编程实现:程序功能是在一个有序序列中插入一个数后,该数列依然有序 输入测试数据:2 3 5 7 8 23 34 56 78 90 25 程序运行结果:插入之后的数组为 2 3 5 7 8 23 25 34 56 78 90 第一个就…