智能优化算法:雪橇犬优化算法(Sled Dog Optimizer,SDO)求解23个经典函数测试集,MATLAB

一、雪橇犬优化算法

  1. 算法简介:雪橇犬优化算法(Sled Dog Optimizer,SDO)是2024年10月发表于JCR1区、中科院1区SCI期刊《Advanced Engineering Informatics》的新型仿生元启发式算法。它模拟雪橇犬的拉雪橇、训练和退役行为构建模型,旨在求解工程领域的优化问题。该算法的提出丰富了智能优化算法的种类,为解决现实世界中的复杂优化难题提供了创新方案。
  2. 算法原理
    • 行为模拟基础:基于对雪橇犬实际行为的观察和抽象。例如,雪橇犬拉雪橇时会受前犬、后犬及同伴影响,领头犬能依据经验和主人指令行动;遇到障碍会躲避;特殊情况下会探索新区域;能力不足的犬会接受训练;多次执行任务受伤的犬会退役。这些行为特征为算法设计提供了直观依据。
    • 优化策略本质:通过模拟上述行为,算法实现对解空间的有效搜索。利用犬只间的协作、适应和淘汰机制,引导种群向更优解进化,平衡全局搜索和局部开发能力,避免陷入局部最优解。
  3. 数学模型
    • 初始化模型:采用随机初始化,公式为 D o g = L b + r a n d ⋅ ( U b − L b ) Dog = Lb + rand·(Ub - Lb) Dog=Lb+rand(UbLb) L b Lb Lb U b Ub Ub是变量取值范围的下限和上限, r a n d rand rand [ 0 , 1 ] [0, 1] [0,1]区间的随机数。这使得算法在搜索初期能在整个解空间随机分布初始解,为后续搜索提供多样性。
    • 雪橇犬选择模型:用公式 N 1 = 0.7 ⋅ N + k 1 ⋅ 2 k 2 N_1 = 0.7·N + k_1 ·2k^2 N1=0.7N+k12k2确定参与拉雪橇的犬只数量 N 1 N_1 N1 N N N为种群数量)。这种选择方式模拟实际任务分配,使算法聚焦于较优解区域的搜索,提高搜索效率。
    • 旅行模型:正常旅行时,雪橇犬速度更新公式根据位置不同而不同。当 i = 1 , 2 i = 1, 2 i=1,2时, V i = ω ⋅ V i + c 1 ⋅ r 1 ⋅ ( D o g G i − D o g i ) + c 2 ⋅ r 2 ⋅ ( D o g Z − D o g i ) V_{i}=\omega \cdot V_{i}+c_{1} \cdot r_{1} \cdot\left(Dog_{G_{i}} - Dog_{i}\right)+c_{2} \cdot r_{2} \cdot\left(Dog_{Z} - Dog_{i}\right) Vi=ωVi+c1r1(DogGiDogi)+c2r2(DogZDogi);当 i ∈ [ 3 , N 1 − 2 ] i \in [3, N_{1}-2] i[3,N12]时, V i = ω ⋅ V i + c 1 ⋅ r 1 ⋅ ( D o g i − 2 − D o g i ) + c 2 ⋅ r 2 ⋅ ( D o g i + 2 − D o g i ) + 2 ⋅ l ⋅ r 3 ⋅ ( D o g t − D o g i ) V_{i}=\omega \cdot V_{i}+c_{1} \cdot r_{1} \cdot\left(Dog_{i - 2}-Dog_{i}\right)+c_{2} \cdot r_{2} \cdot\left(Dog_{i + 2}-Dog_{i}\right)+2 \cdot l \cdot r_{3} \cdot\left(Dog_{t}-Dog_{i}\right) Vi=ωVi+c1r1(Dogi2Dogi)+c2r2(Dogi+2Dogi)+2lr3(DogtDogi);当 i = N 1 − 1 , N 1 i = N_{1}-1, N_{1} i=N11,N1时, V i = ω ⋅ V i + c 1 ⋅ r 1 ⋅ ( D o g i − 2 − D o g i ) + c 2 ⋅ r 2 ⋅ ( D o g r − D o g i ) + 2 ⋅ l r 3 ⋅ ( D o g t − D o g i ) V_{i}=\omega \cdot V_{i}+c_{1} \cdot r_{1} \cdot\left(Dog_{i - 2}-Dog_{i}\right)+c_{2} \cdot r_{2} \cdot\left(Dog_{r}-Dog_{i}\right)+2 \cdot l_{r_{3}} \cdot\left(Dog_{t}-Dog_{i}\right) Vi=ωVi+c1r1(Dogi2Dogi)+c2r2(DogrDogi)+2lr3(DogtDogi)。其中, ω \omega ω是惯性权重,平衡全局探索和局部开发; c 1 c_1 c1 c 2 c_2 c2是学习因子,控制向优秀解学习的程度; r 1 r_1 r1 r 2 r_2 r2 r 3 r_3 r3是随机数; D o g G i Dog_{G_{i}} DogGi D o g Z Dog_{Z} DogZ等是不同参考位置的犬只。位置更新公式为 D o g i = D o g i + V i Dog_i = Dog_i + V_i Dogi=Dogi+Vi
    • 避障模型:遇到障碍时,雪橇犬位置更新公式为: D o g i = { D o g i + 0.5 ⋅ r 4 ⋅ ( D o g Z − D o g N ) + k ⋅ p 2 ⋅ r 5 ⋅ ( D o g G i − D o g N ) , if  r a n d ≥ 0.5 D o g i + 0.5 ⋅ r 4 ⋅ ( D o g Z − D o g N ) + k ⋅ p 1 2 ⋅ r 5 ⋅ ( D o g G i − D o g N ) , otherwise Dog_i = \begin{cases} Dog_{i}+0.5 \cdot r_{4} \cdot\left(Dog_{Z}-Dog_{N}\right)+k \cdot p_{2} \cdot r_{5} \cdot\left(Dog_{G_{i}} - Dog_{N}\right), & \text{if } rand \geq 0.5 \\ Dog_{i}+0.5 \cdot r_{4} \cdot\left(Dog_{Z}-Dog_{N}\right)+k \cdot p_{1}^{2} \cdot r_{5} \cdot\left(Dog_{G_{i}} - Dog_{N}\right), & \text{otherwise} \end{cases} Dogi={Dogi+0.5r4(DogZDogN)+kp2r5(DogGiDogN),Dogi+0.5r4(DogZDogN)+kp12r5(DogGiDogN),if rand0.5otherwise r 4 r_4 r4 r 5 r_5 r5等是随机数和参数,确保算法在搜索中能避开局部最优。
    • 迷失方向模型:迷失方向时,公式为 D o g i = r 6 ⋅ ( D o g i + D o g z 2 ) + 0.5 ⋅ C ⋅ r 7 ⋅ ζ ⋅ ( D o g r − ζ ⋅ D o g i ) Dog_{i}=r_{6} \cdot\left(\frac{Dog_{i}+Dog_{z}}{2}\right)+0.5 \cdot C \cdot r_{7} \cdot \zeta \cdot\left(Dog_{r}-\zeta \cdot Dog_{i}\right) Dogi=r6(2Dogi+Dogz)+0.5Cr7ζ(DogrζDogi),使算法在陷入局部最优时有机会跳出,继续寻找更优解。
    • 训练模型:对不符合要求的雪橇犬,训练公式为 D o g i = D o g i + r 8 ⋅ F ⋅ ( r 9 ⋅ D 1 ⋅ X 1 + r 10 ⋅ D 2 ⋅ X 2 + r 11 ⋅ D 3 ⋅ X 3 ) Dog_{i}=Dog_{i}+r_{8} \cdot F \cdot\left(r_{9} \cdot D_{1} \cdot X_{1}+r_{10} \cdot D_{2} \cdot X_{2}+r_{11} \cdot D_{3} \cdot X_{3}\right) Dogi=Dogi+r8F(r9D1X1+r10D2X2+r11D3X3)。其中, D 1 = ∑ j = 1 D i m ( D o g Z j − D o g B e t t e r j ) 2 D_{1}=\sqrt{\sum_{j = 1}^{Dim }\left(Dog_{Z}^{j}-Dog_{Better }^{j}\right)^{2}} D1=j=1Dim(DogZjDogBetterj)2 D 2 = ∑ j = 1 D i m ( D o g 1 j + D o g 2 j 2 − D o g W o r s e j ) 2 D_{2}=\sqrt{\sum_{j = 1}^{Dim}\left(\frac{Dog_{1}^{j}+Dog_{2}^{j}}{2}-Dog_{Worse }^{j}\right)^{2}} D2=j=1Dim(2Dog1j+Dog2jDogWorsej)2 D 3 = ∑ j = 1 D i m ( D o g B e t t e r j − D o g W o r s e j ) 2 D_{3}=\sqrt{\sum_{j = 1}^{Dim}\left(Dog_{Better }^{j}-Dog_{Worse }^{j}\right)^{2}} D3=j=1Dim(DogBetterjDogWorsej)2 X 1 = D o g Z − D o g B e t t e r X_{1}=Dog_{Z}-Dog_{Better} X1=DogZDogBetter X 2 = D o g 1 + D o g 2 2 − D o g W o r s e X_{2}=\frac{Dog_{1}+Dog_{2}}{2}-Dog_{Worse} X2=2Dog1+Dog2DogWorse X 3 = D o g B e t t e r − D o g W o r s e X_{3}=Dog_{Better}-Dog_{Worse} X3=DogBetterDogWorse D o g B e t t e r Dog_{Better} DogBetter是完成任务的随机个体, D o g W o r s e Dog_{Worse} DogWorse是未执行任务的个体,帮助较差个体向优秀个体学习,提升种群质量。
    • 退役模型:通过对适应度值排序实现退役。输入雪橇犬种群 X X X和适应度值 f f f,对 f f f从小到大排序记录索引数组 i n d e x index index,再根据 i n d e x index index重排个体相关信息,输出排序后的种群 X ′ X' X和适应度值 f ′ f' f,保证算法保留更优个体。
  4. 算法流程
    • 初始化:根据问题确定种群大小 N N N、维度 D i m Dim Dim、最大迭代次数 T T T等参数。随机生成初始种群 D o g Dog Dog,初始化速度矩阵 V S t e p VStep VStep为零矩阵。计算每个个体的适应度值 f D o g fDog fDog,确定当前最优个体 z b e s t zbest zbest和全局最优个体 g b e s t gbest gbest
    • 迭代优化:在 T T T次迭代中,每次迭代更新参数,如 y y y c c cc cc c 1 c1 c1 c 2 c2 c2 w 1 w1 w1 p 1 p1 p1 C F CF CF等。计算参与拉雪橇的犬只数量 G o D o g GoDog GoDog,对雪橇犬按退役机制排序。对正常旅行的犬只( j = 1 j = 1 j=1 G o D o g − 1 GoDog - 1 GoDog1),根据位置更新速度 V S t e p VStep VStep并限制边界,再更新位置 D o g Dog Dog并处理边界,计算新的适应度值 f D o g ( j ) fDog(j) fDog(j)。对训练阶段的犬只( j = G o D o g + 2 j = GoDog + 2 j=GoDog+2 D o g N u m DogNum DogNum),按训练公式计算新位置 N e w D O G New_DOG NewDOG,处理边界后比较适应度,若新适应度更优则更新。生成随机数 S D SD SD,根据 S D SD SD值判断雪橇犬状态(避障、无特殊情况、迷失方向),按相应公式更新 G o D o g + 1 GoDog + 1 GoDog+1只犬的位置,处理边界并比较适应度更新。每次迭代结束更新 g b e s t gbest gbest z b e s t zbest zbest,记录当前最优适应度值 C u r v e ( i t e r ) Curve(iter) Curve(iter)
    • 结果输出:迭代结束后,输出最优位置 B e s t P o s BestPos BestPos z b e s t ( 1 , : ) zbest(1,:) zbest(1,:))、最优适应度值 B e s t F i t BestFit BestFit f z b e s t ( 1 ) fzbest(1) fzbest(1))、适应度变化曲线 C u r v e Curve Curve

参考文献
[1] GANG HU . SDO: A novel sled dog-inspired optimizer for solving engineering problems[J]. Advanced Engineering Informatics, 2024, 62: Article 102783. DOI:10.1016/j.aei.2024.102783.

二、23个函数介绍

在这里插入图片描述
参考文献:

[1] Yao X, Liu Y, Lin G M. Evolutionary programming made faster[J]. IEEE transactions on evolutionary computation, 1999, 3(2):82-102.

三、部分代码及结果



clear;
clc;
close all;
warning off all;

SearchAgents_no=50;    %Number of search solutions
Max_iteration=500;    %Maximum number of iterations

Func_name='F1'; % Name of the test function

% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_F(Func_name); 

tic;
[Best_score,Best_pos,cg_curve]=SGA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); 
tend=toc;

% figure('Position',[500 500 901 345])
%Draw search space
subplot(1,2,1);
func_plot(Func_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Func_name,'( x_1 , x_2 )'])

%Draw objective space
subplot(1,2,2);
semilogy(cg_curve,'Color','m',LineWidth=2.5)
title(Func_name)

% title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');

axis tight
grid on
box on
legend('SGA')

display(['The running time is:', num2str(tend)]);
display(['The best fitness is:', num2str(Best_score)]);
display(['The best position is: ', num2str(Best_pos)]);

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、完整MATLAB代码见下方名片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

0084.基于springboot+vue的医患档案管理系统

一、系统说明 基于springbootvue的医患档案管理系统,系统功能齐全, 代码简洁易懂,适合小白学编程。 二、系统架构 前端:vue|elementui 后端:springboot| mybatis 环境:jdk1.8 | mysql8.0 | maven 三、相关功能介绍 1.登录、注…

java项目之网络游戏交易系统源码(ssm+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的网络游戏交易系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 本网络游戏交易系统分为管理员…

【LLM】本地部署LLM大语言模型+可视化交互聊天,附常见本地部署硬件要求(以Ollama+OpenWebUI部署DeepSeekR1为例)

【LLM】本地部署LLM大语言模型可视化交互聊天,附常见本地部署硬件要求(以OllamaOpenWebUI部署DeepSeekR1为例) 文章目录 1、本地部署LLM(以Ollama为例)2、本地LLM交互界面(以OpenWebUI为例)3、本…

事务的4个特性和4个隔离级别

事务的4个特性和4个隔离级别 1. 什么是事务2. 事务的ACID特性2.1 原子性2.2 一致性2.3 持久性2.4 隔离性 3. 事务的创建4. 事务并发时出现的问题4.1 DIRTY READ 脏读4.2 NON - REPEATABLR READ 不可重复读4.3 PHANTOM READ 幻读 5. 事务的隔离级别5.1 READ UNCOMMITTED 读未提交…

Linux中文件目录类指令

1、pwd指令 基本语法:pwd 功能:显示当前工作目录的绝对路径 1.相对路径访问和绝对路径访问 当前处于home目录下,访问a.txt文件 相对路径访问:kim/better/a.txt,从当前位置开始定位 绝对路径访问:/home…

Kafka可视化工具EFAK(Kafka-eagle)安装部署

Kafka Eagle是什么? Kafka Eagle是一款用于监控和管理Apache Kafka的开源系统,它提供了完善的管理页面,例如Broker详情、性能指标趋势、Topic集合、消费者信息等。 源代码地址:https://github.com/smartloli/kafka-eagle 前置条件…

蓝桥杯之日期题

文章目录 1.蓝桥杯必备知识点2. 题型13.需求2 1.蓝桥杯必备知识点 蓝桥杯是一个面向全国高校计算机相关专业学生的学科竞赛,涵盖多个赛道,常见的有软件类(如 C/C 程序设计、Java 软件开发、Python 程序设计)和电子类(…

【算法基础篇】-字符串

字符串篇 一、最长回文子串二、二进制求和三、字符串相乘今日分享这里 一、最长回文子串 最长回文子串 给你一个字符串 s,找到 s 中最长的 回文 子串。 讲解: 我们这里使用的是中心扩展方法,其实类似于暴力枚举,但是时间复杂度…

清华大学DeepSeek文档下载,清华大学deepseek下载(完成版下载)

文章目录 前言一、清华大学DeepSeek使用手册下载二、清华大学DeepSeek使用手册思维导图 前言 这是一篇关于清华大学deepseek使用手册pdf的介绍性文章,主要介绍了DeepSeek的定义、功能、使用方法以及如何通过提示语设计优化AI性能。以下是对这些核心内容的简要概述&…

DeepSeek技术提升,Linux本地部署全攻略

文章目录 1.Ollama部署1.1 安装Ollama1.2 配置Ollama1.3 下载deepseek模型 2.安装MaxKB可视化页面2.1 下载镜像2.2 运行容器2.3 配置MaxKB 3.配置Chatbox AI可视化页面 1.Ollama部署 Ollama下载地址 根据自己需求选择版本下载 1.1 安装Ollama 下载安装脚本并执行 curl -fs…

QSNCTF-WEB做题记录(2)

[第一章 web入门]常见的搜集 来自 <天狩CTF竞赛平台> 1&#xff0c;首先就是对网站进行目录枚举爆破 dirsearch -u http://challenge.qsnctf.com:31616 -x 404,403 得到如下的目录&#xff0c;分别查看一下内容 /.DS_Store /inde…

网络空间安全(1)web应用程序的发展历程

前言 Web应用程序的发展历程是一部技术创新与社会变革交织的长卷&#xff0c;从简单的文档共享系统到如今复杂、交互式、数据驱动的平台&#xff0c;经历了多个重要阶段。 一、起源与初期发展&#xff08;1989-1995年&#xff09; Web的诞生&#xff1a; 1989年&#xff0c;欧洲…

pandas读取数据

pandas读取数据 导入需要的包 import pandas as pd import numpy as np import warnings import oswarnings.filterwarnings(ignore)读取纯文本文件 pd.read_csv 使用默认的标题行、逗号分隔符 import pandas as pd fpath "./datas/ml-latest-small/ratings.csv" 使…

SSL 证书是 SSL 协议实现安全通信的必要组成部分

SSL证书和SSL/TLS协议有着密切的关系&#xff0c;但它们本质上是不同的概念。下面是两者的区别和它们之间的关系的表格&#xff1a; 属性SSL/TLS 协议SSL证书英文全称SSL&#xff08;Secure Sockets Layer&#xff09;&#xff0c;TLS&#xff08;Transport Layer Security&am…

蓝桥杯单片机基础部分——1.5基础模块代码升级

前言 之前的蓝桥杯单片机基础部分——1、基础模块代码发现有的同学不太会使&#xff0c;这样的话就给他们都封装一下函数&#xff0c;额外封装一下蜂鸣器和继电器&#xff0c;这就全了&#xff0c;到时候的逻辑只要没问题就没啥事了 LED灯模块 现在&#xff0c;给这里封装一个…

PCB设计常用布局布线方法

PCB设计常用布局布线方法 **1.模块化布局&#xff0c;**先放大器件再放小器件。 立创在原理图框完后&#xff0c;在PCB快捷shiftp 2.布局对齐美观 3.重要信号线优先处理 分类再画 4.减少Stub布线&#xff1a;就是避免为连接的线段&#xff0c;防止产生“天线效应”&#xff…

基于C++“简单且有效”的“数据库连接池”

前言 数据库连接池在开发中应该是很常用的一个组件&#xff0c;他可以很好的节省连接数据库的时间开销&#xff1b;本文基使用C实现了一个简单的数据库连接池&#xff0c;代码量只有400行只有&#xff0c;但是压力测试效果很好&#xff1b;欢迎收藏 关注&#xff0c;本人将会…

LangChain大模型应用开发:LangGraph快速构建Agent工作流应用

介绍 大家好&#xff0c;博主又来给大家分享知识了。今天给大家分享的内容是使用LangChain进行大规模应用开发中的LangGraph快速构建Agent工作流应用。 通过对前几次对LangChain的技术分享。我们知道LangChain作为一个强大的工具集&#xff0c;为开发者们提供了丰富的资源和便…

基于 IMX6ULL 的环境监测自主调控系统

文章目录 前言一、项目介绍二、前台QT界面1. 界面设计2. 代码示例 三、后台硬件驱动四、JsonRPC 实现前后台分离1. 为什么要拆分&#xff1f;2. 如何拆分&#xff1f; 五、总结 前言 项目完整代码&#xff1a;基于 IMX6ULL 的环境监测自主调控系统完整代码 该项目的源代码适用…

洛谷:花神的数论题--数位dp

求乘积 const int N 1e2 10,T 20;LL n; LL a[N]; LL dp[N][N];//枚举的第i位,没有任何限制,已经填写了j个1的数的乘积 //表示在[pos 1, len]中已经填写了cnt个1&#xff0c;[1, pos]任意填写数&#xff0c;所有合法方案的乘积LL mo(LL x) {return (x % mod mod) % mod; }…