智能优化算法:基于厨师的优化算法-附代码

news2024/9/27 17:25:27

智能优化算法:基于厨师的优化算法

文章目录


摘要:基于厨师的优化算法(Chef-Based Optimization Algorithm (CBOA)),是于2022年提出的一种基于人类行为的优化算法,该算法通过模拟厨师的烹饪行为来进行寻优,具有寻优能力强,收敛速度快等特点

1.基于厨师的优化算法

烹饪专业的学生和年轻厨师参加培训课程,以提高他们的烹饪技能并成为厨师。这一概念类似于元启发式算法,其中初始化几个候选解决方案,然后通过迭代过程进行改进,以确定最佳候选解决方案作为算法实现结束时问题的解决方案。因此,将烹饪专业的学生转变为烹饪学校的厨师的过程是CBOA设计的灵感来源。

1.1 初始化

与其他优化算法类似,在寻优空间里随机初始化种群:
x i , j = l b j + r ⋅ ( u b j − l b j ) (2) x_{i, j}=l b_j+r \cdot\left(u b_j-l b_j\right)\tag{2} xi,j=lbj+r(ubjlbj)(2)
其中 x i , j x_{i,j} xi,j为厨师个体, l b j lb_j lbj为寻优下边界, u b j ub_j ubj为寻优上边界, r r r为[0,1]之间的随机数。

在算法初始化后,CBOA步骤逐渐应用于候选解决方案以改进它们。CBOA成员包括一群指导厨师和一群烹饪专业的学生。每个组的更新过程都不同。在比较目标函数值的基础上,选择一些目标函数值较好的CBOA成员作为厨师导师。因此,如果CBOA总体矩阵的行根据目标函数的值按升序排序(因此,第一行中的成员是最好的成员),那么第一个NC成员组被选为厨师导师组,其余N−NC成员组则被选为烹饪学生组。CBOA排序的总体矩阵和排序的目标函数向量在等式(4)和(5)中指定。
X S = [ X S 1 ⋮ X S N C X S N C + 1 ⋮ X S N ] N × m = [ x s 1 , 1 ⋯ x s 1 , j ⋯ x s 1 , m ⋮ ⋱ ⋮ ⋯ ⋮ x s N C , 1 ⋯ x s N C , j ⋯ x s N C , m x s N C + 1 , 1 ⋯ x s N C + 1 , j ⋯ x s N C + 1 , m ⋮ ⋯ ⋮ ⋱ ⋮ x s N , 1 ⋯ x s N , j ⋯ x s N , m ] N × m , (4) X S=\left[\begin{array}{c} X S_1 \\ \vdots \\ X S_{N_C} \\ X S_{N_C+1} \\ \vdots \\ X S_N \end{array}\right]_{N \times m}=\left[\begin{array}{ccccc} x s_{1,1} & \cdots & x s_{1, j} & \cdots & x s_{1, m} \\ \vdots & \ddots & \vdots & \cdots & \vdots \\ x s_{N_C, 1} & \cdots & x s_{N_C, j} & \cdots & x s_{N_C, m} \\ x s_{N_C+1,1} & \cdots & x s_{N_C+1, j} & \cdots & x s_{N_C+1, m} \\ \vdots & \cdots & \vdots & \ddots & \vdots \\ x s_{N, 1} & \cdots & x s_{N, j} & \cdots & x s_{N, m} \end{array}\right]_{N \times m},\tag{4} XS= XS1XSNCXSNC+1XSN N×m= xs1,1xsNC,1xsNC+1,1xsN,1xs1,jxsNC,jxsNC+1,jxsN,jxs1,mxsNC,mxsNC+1,mxsN,m N×m,(4)

F S = [ F S 1 ⋮ F S N C F S N C + 1 ⋮ F S N ] N × m , (5) F S=\left[\begin{array}{c} F S_1 \\ \vdots \\ F S_{N_C} \\ F S_{N_C+1} \\ \vdots \\ F S_N \end{array}\right]_{N \times m},\tag{5} FS= FS1FSNCFSNC+1FSN N×m,(5)

其中 N c Nc Nc为厨师导师人数, X S XS XS为经过排序后的厨师, F S FS FS为经过排序后的适应度值。其中 X S 1 XS_1 XS1 X S N c XS_{Nc} XSNc代表厨师导师, X S N c + 1 XS_{Nc+1} XSNc+1 X S N XS_N XSN代表学徒。

1.2 阶段1:厨师导师小组更新( X S 1 XS_1 XS1 X S N c XS_{Nc} XSNc更新)

在烹饪学校,假设有几位厨师长负责向学生教授烹饪技能。厨师长遵循两种策略来提高他们的烹饪技能。在第一种策略中,他们模仿最好的厨师教练,并尝试学习厨师教练的技术。这一战略展示了全局搜索和CBOA探索能力。

根据这一策略更新厨师导师的优势在于,顶级厨师(顶级人群成员)在开始教学生之前,会根据最佳厨师(最佳人群成员)提高他们的技能。因此,在CBOA设计中,不直接依赖于仅根据人群中最好的成员来更新学生的位置。此外,这种方法防止了算法陷入局部最优,并使搜索空间的不同区域得到更准确和有效的扫描。基于该策略,首先为i=1,2,…,计算每个厨师教练的新职位,NC和j=1,2,m使用以下方程
x s i , j C / S 1 = x s i , j + r ⋅ ( B C j − I ⋅ x s i , j ) (6) x s_{i, j}^{C / S 1}=x s_{i, j}+r \cdot\left(B C_j-I \cdot x s_{i, j}\right) \tag{6} xsi,jC/S1=xsi,j+r(BCjIxsi,j)(6)
其中 x s i , j C / S 1 xs_{i,j}^{C/S1} xsi,jC/S1是更新后的厨师。 B C BC BC为最优厨师。 r r r为[0,1]之间的随机数。 I I I是随机选择的,其值为1或者2。如果更新后的厨师更优则更新当前厨师,否则保持原状:
X S i = { X S i C / S 1 , F S i C / S 1 < F i X S i ,  else,  (7) X S_i= \begin{cases}X S_i^{C / S 1}, & F S_i^{C / S 1}<F_i \\ X S_i, & \text { else, }\end{cases} \tag{7} XSi={XSiC/S1,XSi,FSiC/S1<Fi else, (7)
在第二种策略中,每位厨师教练都试图通过个人活动和锻炼来提高自己的烹饪技能。该策略代表了局部搜索和CBOA的利用能力。如果每个问题变量都被认为是一种烹饪技能,那么厨师教练会努力提高所有这些技能,以获得更好的目标函数值。

根据个人活动和练习进行更新的优势在于,无论其他人口成员的位置,寻求在其所在位置附近发现更好的解决方案。有可能在本地搜索和利用的基础上获得更好的解决方案群体成员在搜索空间中的位置的变化。根据这个概念,围绕着每个厨师搜索空间中的讲师,生成j=1,2,…的随机位置,m,使用等式(8)至(10)。如果这样随机位置提高了目标函数的值,更新是可以接受的,在这个条件下使用等式(11)进行建模。
l b j local  = l b j t , (8) l b_j^{\text {local }}=\frac{l b_j}{t}, \tag{8} lbjlocal =tlbj,(8)

u b j local  = u b j t (9) u b_j^{\text {local }}=\frac{u b_j}{t} \tag{9} ubjlocal =tubj(9)

其中t为迭代次数。
x s i , j C / S 2 = x s i , j + l b j local  + r ⋅ ( u b j local  − l b j local  ) , i = 1 , 2 , … , N C , j = 1 , 2 , … , m (10) x s_{i, j}^{C / S 2}=x s_{i, j}+l b_j^{\text {local }}+r \cdot\left(u b_j^{\text {local }}-l b_j^{\text {local }}\right), i=1,2, \ldots, N_C, j=1,2, \ldots, m \tag{10} xsi,jC/S2=xsi,j+lbjlocal +r(ubjlocal lbjlocal ),i=1,2,,NC,j=1,2,,m(10)

X S i = { X S i C / S 2 , F S i C / S 2 < F i X S i ,  else,  (11) X S_i= \begin{cases}X S_i^{C / S 2}, & F S_i^{C / S 2}<F_i \\ X S_i, & \text { else, }\end{cases} \tag{11} XSi={XSiC/S2,XSi,FSiC/S2<Fi else, (11)

其中 x s i , j C / S 2 xs_{i,j}^{C/S2} xsi,jC/S2是更新后的厨师。 B C BC BC为最优厨师。 r r r为[0,1]之间的随机数。如果更新后的厨师更优则更新当前厨师,否则保持原状。

1.3 阶段2:厨师学徒更新( X S N c + 1 XS_{Nc+1} XSNc+1 X S N XS_{N} XSN更新)

烹饪专业的学生进入烹饪学校学习烹饪技能并成为一名厨师。在CBOA的设计中,假设烹饪学生学习烹饪技能遵循三种策略。根据第一种策略,每个烹饪专业的学生随机选择一个由其中一位厨师教授的课程,然后由这位厨师教练教授烹饪技巧。基于这一策略更新烹饪学生的优势在于,有不同的厨师导师可以指导他们,导致烹饪学生在所选厨师导师的指导下学习不同的技能(即,群体成员转移到搜索空间的其他区域)。另一方面,如果所有烹饪专业的学生只向最好的厨师老师学习(所有成员都向最好的成员学习),那么在解决问题的空间中进行有效的全局搜索是不可能的。该策略在CBOA中以这样的方式进行模拟:首先,对于每个烹饪学生,基于厨师老师的培训和指导来计算新的职位,对于i=NC+1,NC+2,N、 j=1,2,m、 使用等式(12)。
x s i , j S / S 1 = x s i , j + r ⋅ ( C I k i , j − I ⋅ x s i , j ) , (12) x s_{i, j}^{S / S 1}=x s_{i, j}+r \cdot\left(C I_{k_i, j}-I \cdot x s_{i, j}\right),\tag{12} xsi,jS/S1=xsi,j+r(CIki,jIxsi,j),(12)
其中 x s i , j C / S 1 xs_{i,j}^{C/S1} xsi,jC/S1是更新后的学徒厨师, C I CI CI为随机选择的一个厨师导师,k为厨师导师范围的随机索引。 I I I是随机选择的,其值为1或者2。如果更新后的厨师更优则更新当前厨师,否则保持原状。’
X S i = { X S i S / S 1 , F S i S / S 1 < F i X S i ,  else  (13) X S_i= \begin{cases}X S_i^{S / S 1}, & F S_i^{S / S 1}<F_i \\ X S_i, & \text { else }\end{cases} \tag{13} XSi={XSiS/S1,XSi,FSiS/S1<Fi else (13)
在第二策略中由于假设CBOA中的每个问题变量是烹饪技能,每个烹饪专业的学生都试图完全学习厨师老师的一项技能,并完全模仿厨师老师(因此,我们所说的“技能”指的是一顿大餐的食谱)。这种策略增强了CBOA的全球搜索和探索能力。这种策略的优点是,不用更新所有候选解决方案变量(即所有烹饪学生技能),只有一个变量(一种技能,即一种食谱)发生变化。可能没有必要更新所有成员的位置坐标以获得更好的解决方案。

根据这一概念,使用等式(14)。
x s i , j S / S 2 = { C I k i , j , j = l , x s i , j ,  else,  (14) \begin{aligned} &x s_{i, j}^{S / S 2}= \begin{cases}C I_{k_i, j}, & j=l, \\ x s_{i, j}, & \text { else, }\end{cases} \end{aligned} \tag{14} xsi,jS/S2={CIki,j,xsi,j,j=l, else, (14)

X S i = { X S i S / S 2 , F S i S / S 2 < F i ; X S i ,  else,  (15) \begin{aligned} X S_i= \begin{cases}X S_i^{S / S 2}, & F S_i^{S / S 2}<F_i ; \\ X S_i, & \text { else, }\end{cases} \end{aligned} \tag{15} XSi={XSiS/S2,XSi,FSiS/S2<Fi; else, (15)

其中 x s i , j C / S 2 xs_{i,j}^{C/S2} xsi,jC/S2是更新后的学徒厨师, C I CI CI为随机选择的一个厨师导师,k为厨师导师范围的随机索引。如果更新后的厨师更优则更新当前厨师,否则保持原状。

在第三种策略中,每个烹饪学生都试图根据自己的个人活动和练习来提高自己的烹饪技能。事实上,这种策略代表了本地搜索和CBOA的开发能力。根据个人活动和练习的策略更新烹饪学生的优势在于,它增加了本地搜索和算法利用的能力,从而在发现的解决方案附近获得更好的可能解决方案。在这种策略中,与厨师导师的本地搜索策略类似,烹饪专业的学生试图通过小而精确的步骤收敛到更好的解决方案。如果每个问题变量都被认为是一种烹饪技能,那么烹饪学生会努力提高所有这些技能,以获得更好的目标函数值。

根据这个概念,在搜索空间中的每个烹饪学生周围,通过等式(8)和(9)生成随机位置,并使用等式(16)计算新位置。
x s i , j S / S 3 = { x s i , j + l b j local  + r ⋅ ( u b j local  − l b j local  ) , j = q ; x s i , j , j ≠ q , (16) \begin{aligned} &x s_{i, j}^{S / S 3}=\left\{\begin{array}{lr} x s_{i, j}+l b_j^{\text {local }}+r \cdot\left(u b_j^{\text {local }}-l b_j^{\text {local }}\right), & j=q ; \\ x s_{i, j}, & j \neq q, \end{array}\right. \end{aligned}\tag{16} xsi,jS/S3={xsi,j+lbjlocal +r(ubjlocal lbjlocal ),xsi,j,j=q;j=q,(16)

X S i = { X S i S / S 3 , F S i S / S 3 < F i X S i ,  else  (17) \begin{aligned} &X S_i= \begin{cases}X S_i^{S / S 3}, & F S_i^{S / S 3}<F_i \\ X S_i, & \text { else }\end{cases} \end{aligned}\tag{17} XSi={XSiS/S3,XSi,FSiS/S3<Fi else (17)

其中 x s i , j C / S 2 xs_{i,j}^{C/S2} xsi,jC/S2是更新后的学徒厨师,如果更新后的厨师更优则更新当前厨师,否则保持原状。

流程图如下:

在这里插入图片描述

2. 实验结果

在这里插入图片描述

3.参考文献

[1] Trojovská, E., Dehghani, M. A new human-based metahurestic optimization method based on mimicking cooking training. Sci Rep 12, 14861 (2022). https://doi.org/10.1038/s41598-022-19313-2

4.MATLAB

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

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

相关文章

Arduino处理json较大数据流以及GZIP数据流方法

Arduino处理json较大数据流以及GZIP数据流方法 ✨在一些需要使用网络并从网络数据平台获取数据的项目中,大多数据平台,提供支持的数据流格式,一般以json数据格式返回为主。 📓Arduino json数据流格式化处理方法 🏳‍🌈一般处理json数据基于都是通过ArduinoJson库来处理…

运营-9.内容消费

一个优秀的产品&#xff0c;页面层级要尽量浅 所以&#xff0c;对于常见的内容产品&#xff0c;用户做内容消费一般只涉及两层页面&#xff1a; 内容消费-图文 内容消费-视频 内容消费——免费消费模式 对于绝大部分内容产品来说&#xff0c;它们的内 容都提供免费消费模式。…

文本的清洗和标准化:如何处理混乱的数据?

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Dubbo源码篇02---从泛化调用探究Wrapper机制的原理

Dubbo源码篇02---从泛化调用探究Wrapper机制的原理 什么是泛化调用从传统三层架构说起反射调用尝试优化 泛化调用泛化调用怎么用通过Spring使用泛化调用 利用泛化调用改造现有服务 泛化调用小结 Wrapper机制自定义代理dubbo底层wrapper原理小结 小结 什么是泛化调用 从传统三层…

java实现大气污染排放传输路径模拟(iClientOpenlayer前端渲染)

开头先看下模拟实现效果图 一、技术应用及背景说明 了解大气污染传输路径模拟可以帮助我们更好地了解空气污染的来源和传播方式&#xff0c;从而采取更有效的控制措施。这种模拟技术可以根据大气环境和气象条件&#xff0c;模拟出污染物在大气中的传播路径和影响范围&#xff0…

树的储存结构和表示法_20230506

树的储存结构和表示法 前言 树是一类非常重要的数据结构&#xff0c;它是图和其它更高阶数据的基础&#xff0c;人们对树的储存结构和表示法进行了大量研究&#xff0c;这里介绍三种常见的链表结构来表示树的基本方法。 树的双亲表示法 假设以一组连续空间储存数据的结点&a…

MySQL基础(六)多表查询

多表查询&#xff0c;也称为关联查询&#xff0c;指两个或更多个表一起完成查询操作。 前提条件&#xff1a;这些一起查询的表之间是有关系的&#xff08;一对一、一对多&#xff09;&#xff0c;它们之间一定是有关联字段&#xff0c;这个关联字段可能建立了外键&#xff0c;…

密码学【java】初探究加密方式之非对称加密

文章目录 非对称加密1 常见算法2 生成公钥和私钥3 私钥加密4 私钥加密 公钥解密5 公钥和私钥的保存和读取5.1 **保存公钥和私钥**5.2 读取公钥和私钥 非对称加密 非对称加密算法又称现代加密算法。非对称加密是计算机通信安全的基石&#xff0c;保证了加密数据不会被破解。与对…

argument type mismatch

后端接收前端传来的数据 id&#xff0c;进行批量删除&#xff0c;报错如下&#xff1a; 错误一 removeByIds(ids) com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: java.lang.IllegalArgumentException: argument type mismatch at com.baomidou.mybati…

华为OD机试 - 各位相加(Java)

一、题目描述 给定一个非负整数 num&#xff0c;反复将各个位上的数字相加&#xff0c;直到结果为一位数。 二、思路与算法 各位相加&#xff0c;使用递归&#xff0c;出口是结果的长度等于1。 三、Java算法源码 public static int addDigits(int num) {recursion(num);re…

vs2017如何创建一个asax文件

VS2017无法为网站创建Global.asax文件&#xff0c;导致出现错误WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。 解决方案如下&#xff1a; 勾选要应用的网站&#xff0c;这里我要应用的是ExSite 点击安装&#xff0c;然后点击确定即可。 此时&am…

单片机+PHY芯片+Powerlink协议实现高效数据采集探究(工业总线485和CAN的升级)

CAN总线和RS-485总线作为常用的工业通信总线&#xff0c;在许多工业领域中得到广泛使用。但随着工业应用的不断扩展和网络化的需求增加&#xff0c;它们面临着一些局限性。例如CAN总线虽然具有较高的通信速率和可靠性&#xff0c;但存在节点数量受限、数据传输距离短等问题。而…

Nginx总结

目录 Nginx介绍 Nginx的作用 反向代理 项目架构 实战&#xff1a;访问nginx服务器反向代理到另一台虚拟机上的tomcat服务器 负载均衡 项目架构 实战&#xff1a;访问nginx服务器&#xff0c;是否反向代理到集群中的任意一台tomcat服务器&#xff0c;停止一台tomcat服务器&…

JAVA16新特性

JAVA16新特性 概述 2021年3月16日正式发布,一共更新了17JEP https://openjdk.java.net/projects/jdk/16/ 一 语法层面 1_JEP 397&#xff1a;密封类&#xff08;第二次预览&#xff09; sealed class 第二次预览 通过密封的类和接口来增强Java编程语言,这是新的预览特性,用…

stream的collectors

起因的话&#xff0c;新进公司&#xff0c;看见了一段有意思的代码。 public final class MyCollectors {private MyCollectors() {}static final Set<Collector.Characteristics> CH_ID Collections.unmodifiableSet(EnumSet.of(Collector.Characteristics.IDENTITY_F…

开源中国面试准备

dockerFile常见命令 1、FROM 设置要制作的镜像基于哪个镜像&#xff0c;FROM指令必须是整个Dockerfile的第一个指令&#xff0c;如果指定的镜像不存在默认会自动从Docker Hub上下载 2、MAINTAINER 镜像作者的信息&#xff0c;比如名字或邮箱地址 语法&#xff1a;MAINTAINER n…

HTTP第三讲——四层模型、七层模型

四层模型 TCP/IP 协议&#xff0c;它是 HTTP 协议的下层协议&#xff0c;负责具体的数据传输 工作。TCP/IP 协议是一个“有层次的协议栈”。 TCP/IP 当初的设计者真的是非常聪明&#xff0c;创造性地提出了“分层”的概念&#xff0c;把复杂的网络通信划分出多个层次&#xff…

免费矢量图标网站有哪些?

图标作为UI设计的必要元素&#xff0c;矢量图标是质量的保证。据说完美的用户体验应该从灵活性开始 。在响应设计盛行的当下&#xff0c;灵活矢量图标的重要性不言而喻。在这种情况下&#xff0c;风格齐全、质量上乘的矢量图标网站堪称设计宝藏。在这篇文章中&#xff0c;我们…

基于springboot的医院信管系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

读书笔记--数据治理之法

继续延续上一篇文章&#xff0c;对数据治理之法进行学习。数据治理之法是战术层面的方法&#xff0c;是一套涵盖8项举措的数据治理实施方法论&#xff0c;包括梳理现状与确定目标、能力成熟度评估、治理路线图规划、保障体系建设、技术体系建设、治理策略执行与监控、绩效考核与…