【Matlab】智能优化算法_人工大猩猩部队优化算法GTO

news2024/11/26 4:42:27

【Matlab】智能优化算法_人工大猩猩部队优化算法GTO

  • 1.背景介绍
  • 2.数学模型
    • 2.1 勘探阶段
    • 2.2 开采阶段
      • 2.2.1 跟随银背
      • 2.2.2 成年女性比赛
  • 3.文件结构
  • 4.算法流程图
  • 5.伪代码
  • 6.详细代码及注释
    • 6.1 boundaryCheck.m
    • 6.2 GTO.m
    • 6.3 initialization.m
    • 6.4 main.m
    • 6.5 ObjectiveFunction.m
  • 7.运行结果
  • 8.参考文献

1.背景介绍

大猩猩和其他类人猿一样,有感情,制造和使用工具,建立牢固的家庭纽带,思考自己的过去和未来。一些研究人员认为,大猩猩也有内心的感情或宗教倾向。平均而言,大猩猩在白天会进行休息、旅行和吃饭等活动。大猩猩的饮食因物种而异。山地大猩猩主要是草食性动物,以树叶、茎、果核和树枝等物质为食,而水果在它们的食物中只占很小的一部分。

大猩猩以群体形式生活,称为 “部队”,由一只成年雄性大猩猩或银背大猩猩群体(见图2)和几只成年雌性大猩猩及其后代组成。然而,也有一些群体,包括几只雄性大猩猩。银背大猩猩的寿命通常超过12年,因青春期背上长出银色毛发而得名。

在这里插入图片描述

此外,银背大猩猩有巨大的犬齿,在青春期会再次出现。雄性和雌性大猩猩都有从出生地迁徙的倾向。大猩猩通常会迁徙并转移到新的群体。而且,雄性大猩猩往往会放弃自己的群体,通过吸引迁徙的雌性大猩猩而形成新的群体。然而,雄性大猩猩有时会留在它们出生时所在的群体,并被纳入银背大猩猩群体。如果银背大猩猩死亡,这些大猩猩可能主宰群体或与银背大猩猩一起主宰群体。

另一方面,雄性大猩猩为争夺成年雌性大猩猩而展开激烈竞争。在只有一只大猩猩生活的群体中,雌性大猩猩和后代会分散并为自己寻找新的群体。如果没有银背大猩猩保护小大猩猩,小大猩猩可能会成为杀婴行为的受害者,从而试图加入新的群体来解决这个问题。

银背大猩猩是群体的核心,它能做出所有决定,调解争斗,决定群体的行动,引导大猩猩寻找食物来源,并负责群体的安全福祉。被称为 "黑背 "的年轻雄性大猩猩跟随银背大猩猩,充当群体的后备保护者。银背大猩猩和雌性大猩猩之间的联系构成了大猩猩社会生活的核心。雄性大猩猩的社会关系很差,尤其是在有几只雄性大猩猩的群体中,等级分明。此外,在这些群体中,雄性大猩猩为寻找配偶而展开激烈的竞争。

尽管雄性山地大猩猩群体中的雄性大猩猩倾向于通过玩耍、梳理毛发、呆在一起形成友好关系,有时也会发生同性性行为,但在稳定的群体中很少发生极端暴力事件。然而,当两个山地大猩猩群体相遇时,银背大猩猩会用它们的犬齿在对手的身体上造成很深的伤口和裂缝。雄性大猩猩并不勤于照顾新生儿,但在与其他大猩猩建立联系方面发挥着作用。银背大猩猩与新生儿之间有着强有力的支持关系,并保护它们免受群体内的入侵。大猩猩已知有25种不同的鸣声,其中许多主要用于群体交流。被归类为呼噜声和犬吠声的鸣声最常在旅行时听到,表示群体成员的存在。尖叫和吼叫是银背大猩猩经常发出的警告信号。

本文提供了一种名为GTO的新算法,利用猩猩部队的行为来解决优化问题。

2.数学模型

在本节中,受大猩猩群体行为的启发,我们提供了一种新的元启发式算法,称为GTO,其中提出了具体的数学机制,以充分解释探索和开发两个阶段。在GTO算法中,根据大猩猩的行为模拟了五种不同的算子用于优化操作(探索和利用)。

在探索阶段使用了三种不同的操作方法:迁移到一个未知的地方,以增加GTO的探索。第二个操作者,即向其他猩猩迁移,增加了探索和开发之间的平衡。探索阶段的第三个操作符,即向已知位置迁移,可显著提高GTO搜索不同优化空间的能力。另一方面,在开发阶段使用了两个算子,这大大提高了开发阶段的搜索性能。在GTO中,探索和利用的阶段转换过程采用了不同的方法,如图3所示,图3是GTO算法中优化操作过程的概览。

在这里插入图片描述

GTO通常遵循以下几条规则来寻找解决方案:

  1. GTO算法的优化空间包含三种类型的解,其中X称为大猩猩的位置向量,GX为每个阶段创建的大猩猩候选位置向量,如果其性能优于当前解,则进行操作。最后,银背是每次迭代中找到的最佳解决方案。
  2. 考虑到优化操作所选择的搜索代理数量,整个种群中只有一个银背。
  3. X、GX、银背三种解准确地模拟了大猩猩在自然界中的社会生活。
  4. 大猩猩可以通过寻找更好的食物来源或在一个公平和强大的群体中定位来提高自己的力量。在GTO算法中,每次迭代都会产生解,称为GX。如果找到的解决方案是新的 (GX),它将取代当前解决方案 (X)。否则,它将保留在内存中 (GX)。
  5. 大猩猩的集体生活倾向使它们无法单独生活。因此,它们以群体的形式寻找食物,并继续在银背首领的领导下生活,由银背首领做出所有群体决策。在制定方案阶段,假定种群中最差的方案是大猩猩群体中最弱的成员,大猩猩试图远离最差的方案,向最佳方案(银背)靠拢,从而改善所有大猩猩的处境。

考虑到猩猩在寻找食物时的群体生活和群体共同生活的基本概念,鉴于GTO在许多优化问题中的独特性,该算法可以得到广泛的应用。

GTO算法采用多种机制进行优化操作,具体如下。

2.1 勘探阶段

在本小节中,我们将对GTO中探索阶段的机制进行研究。如果我们考虑到大猩猩群体生活的性质,我们可以得出这样的结论:大猩猩在自然界中以群体的形式生活,在银背大猩猩的统治下,它们服从银背大猩猩;有时大猩猩会离开它们的群体。在离开群体时,大猩猩会迁移到自然界中不同的地方,它们可能在过去遇到过,也可能没有遇到过。在GTO算法中,所有大猩猩都被视为候选解,每个优化运算阶段的最佳候选解都被视为银背大猩猩。我们在探索阶段使用了三种不同的机制,即向未知位置迁移、向已知位置迁移以及向其他大猩猩迁移。这三种机制中的每一种都根据一般程序进行选择。

参数p用于选择向未知地点迁移的机制。当r和p<时,选择第一种机制;当r和p≥0.5时,选择向其它鞘氨醇迁移的机制;当r和p<0.5时,选择向已知位置迁移的机制。根据所使用的机制,每种机制都为GTO算法提供了很好的能力。第一种机制使算法能够很好地监控整个问题空间,第二种机制提高了GTO的探索性能,最后,第三种机制加强了GTO逃离局部最优点的能力。等式(1)用于模拟探索阶段的三种机制。

在这里插入图片描述

在等式(1)中,GX(t + 1)是下一次迭代时的大猩猩候选位置向量。X(t)为大猩猩当前位置向量。此外,r1、r2、r3和rand是每次迭代更新的0到1的随机值。p是优化操作前必须给定的参数,取值范围为0-1;该参数决定了选择迁移机制到未知位置的概率。UB和LB分别代表变量的上限和下限。Xr是从整个种群中随机选择的大猩猩群体中的一个成员,GXr.随机选择的大猩猩候选位置向量之一,包括每个阶段更新的位置。最后,C、L和H分别用公式(2)、(4)和(5)计算。

在这里插入图片描述

在公式(2)中,It为当前迭代值,MaxIt为执行优化操作的总迭代值,F通过公式(3)计算。式(3)中,cos表示余弦函数,r4为每次迭代更新的0到1的随机值。根据图5,在公式(2)中,优化操作的早期阶段会产生在较大区间内突然变化的值,但在最后阶段该变化区间会减小。L用公式(4)计算,其中l为-1和1范围内的随机值。公式(4)用于模拟银背领导力。在现实世界中,银背大猩猩由于在群体领导的早期阶段缺乏足够的经验,可能无法在寻找食物或控制群体方面做出正确的决策;但是,银背大猩猩在获得足够的经验后,其领导力会变得非常稳定。图5显示了使用公式(2)和(4)的两个独立实现所产生的值的变化。

在这里插入图片描述

此外,在公式(1)中,H是通过公式(5)计算的,而在公式(5)中,Z是通过公式(6)计算的,其中Z是问题维数和-C, C范围内的随机值。

图6说明了在探索阶段搜索代理矢量的位置是如何变化的。

在这里插入图片描述

在探索阶段结束时,进行分组操作。在探索阶段结束时,计算所有GX解的代价,如果代价为GXt Xt()<(),则将GX(t)解作为X(t)解。因此,该阶段产生的最佳解也被视为银背解。

2.2 开采阶段

在GTO算法的开发阶段,应用了跟随银背大猩猩和争夺成年雌性大猩猩这两种行为。银背大猩猩领导一个群体,做出所有决定,决定群体的行动,并指挥大猩猩寻找食物来源。它还负责群体的安全和福利,群体中的所有大猩猩都要服从银背大猩猩的所有决定。另一方面,银背大猩猩可能会衰弱、衰老并最终死亡,群体中的黑背大猩猩可能会成为群体领袖,或者其他雄性大猩猩可能会与银背大猩猩交战并统治群体。正如利用阶段的两种机制所描述的,可以利用公式(2)中的C值选择跟随银背大猩猩或竞争成年雌性大猩猩。如果C W≥,则选择 "跟随银背 "机制,但如果C W<,则选择 "竞争 "成年雌性。W是优化操作前需要设置的参数。

2.2.1 跟随银背

银背大猩猩刚成立不久,年轻而健康,猩猩群中的其他雄性大猩猩也都很年轻,很好地跟随银背大猩猩。它们也会听从银背的命令,到各个地区寻找食物来源,并跟随银背。此外,大猩猩成员可以影响所有成员的行动。当选择C W≥值时,选择该策略。方程(7)用于模拟这种行为。图7也用来说明这一机制。

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

在公式(7)中,X(t)为大猩猩位置向量,Xsilverback为银背大猩猩位置向量(最佳解)。此外,L用公式(4)计算,M用公式(8)计算。在公式(8)中,GXi(t)表示每只候选大猩猩在迭代t中的矢量位置,N表示大猩猩的总数,g也用公式(9)估计,在公式(9)中,L也用公式(4)计算。

2.2.2 成年女性比赛

如果C< W ,则第二种机制被用于开发阶段。一段时间后,当年轻的大猩猩进入青春期时,它们会与群体中的其他雄性大猩猩争夺成年雌性,这种争夺往往是暴力的。这种争斗可持续数天,并涉及群体成员。等式(10)用于模拟这种行为。

在这里插入图片描述

在公式(10)中,Xsilverback为银背位置矢量(最佳解),X(t)为当前大猩猩位置矢量。Q是模拟冲击力,用公式(11)计算。在公式(11)中,r5为0至1的随机值。确定冲突中暴力程度的系数向量通过公式(12)计算得出。在公式(12)中,β是优化操作前的给定值参数,E用公式(13)估值,同时用于模拟暴力对解决方案维度的影响。如果rand≥0.5,E的值将等于正态分布中的随机值和问题的维数,但如果rand<0.5,E将等于正态分布中的随机值。图 8 用于说明解的变化情况。

在这里插入图片描述

在开发阶段结束时,进行群体形成操作,估计所有GX解的成本,如果GX(t)的成本<X(t),则将GX(t)解作为X(t)解,并将整个群体中获得的最佳解视为银背。

3.文件结构

在这里插入图片描述

boundaryCheck.m					% 边缘检测
GTO.m							% 人工大猩猩部队优化算法
initialization.m				% 初始化
main.m							% 主函数
ObjectiveFunction.m 			% 目标函数

4.算法流程图

在这里插入图片描述

5.伪代码

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

6.详细代码及注释

6.1 boundaryCheck.m

function [ X ] = BoundaryCheck(X, lb, ub)

    for i=1:size(X,1)
            FU=X(i,:)>ub;
            FL=X(i,:)<lb;
            X(i,:)=(X(i,:).*(~(FU+FL)))+ub.*FU+lb.*FL;
    end
end

6.2 GTO.m


function [Silverback_Score,Silverback,convergence_curve]=GTO(pop_size,max_iter,lower_bound,upper_bound,variables_no,fobj)


% initialize Silverback
Silverback=[];
Silverback_Score=inf;

%Initialize the first random population of Gorilla
X=initialization(pop_size,variables_no,upper_bound,lower_bound);


convergence_curve=zeros(max_iter,1);

for i=1:pop_size
    Pop_Fit(i)=fobj(X(i,:));%#ok
    if Pop_Fit(i)<Silverback_Score
        Silverback_Score=Pop_Fit(i);
        Silverback=X(i,:);
    end
end


GX=X(:,:);
lb=ones(1,variables_no).*lower_bound;
ub=ones(1,variables_no).*upper_bound;

%%  Controlling parameter

p=0.03;
Beta=3;
w=0.8;

%%Main loop
for It=1:max_iter
    
    a=(cos(2*rand)+1)*(1-It/max_iter);
    C=a*(2*rand-1);
    
    %% Exploration:
    
    for i=1:pop_size
        if rand<p
            GX(i,:) =(ub-lb)*rand+lb;
        else
            if rand>=0.5
                Z = unifrnd(-a,a,1,variables_no);
                H=Z.*X(i,:);
                GX(i,:)=(rand-a)*X(randi([1,pop_size]),:)+C.*H;
            else
                GX(i,:)=X(i,:)-C.*(C*(X(i,:)- GX(randi([1,pop_size]),:))+rand*(X(i,:)-GX(randi([1,pop_size]),:))); %ok ok
                
            end
        end
    end
    
    GX = boundaryCheck(GX, lower_bound, upper_bound);
    
    % Group formation operation
    for i=1:pop_size
        New_Fit= fobj(GX(i,:));
        if New_Fit<Pop_Fit(i)
            Pop_Fit(i)=New_Fit;
            X(i,:)=GX(i,:);
        end
        if New_Fit<Silverback_Score
            Silverback_Score=New_Fit;
            Silverback=GX(i,:);
        end
    end
    
    %% Exploitation:
    for i=1:pop_size
        if a>=w
            g=2^C;
            delta= (abs(mean(GX)).^g).^(1/g);
            GX(i,:)=C*delta.*(X(i,:)-Silverback)+X(i,:);
        else
            
            if rand>=0.5
                h=randn(1,variables_no);
            else
                h=randn(1,1);
            end
            r1=rand;
            GX(i,:)= Silverback-(Silverback*(2*r1-1)-X(i,:)*(2*r1-1)).*(Beta*h);
            
        end
    end
    
    GX = boundaryCheck(GX, lower_bound, upper_bound);
    
    % Group formation operation
    for i=1:pop_size
        New_Fit= fobj(GX(i,:));
        if New_Fit<Pop_Fit(i)
            Pop_Fit(i)=New_Fit;
            X(i,:)=GX(i,:);
        end
        if New_Fit<Silverback_Score
            Silverback_Score=New_Fit;
            Silverback=GX(i,:);
        end
    end
    
    convergence_curve(It)=Silverback_Score;
    fprintf("In Iteration %d, best estimation of the global optimum is %4.4f \n ", It,Silverback_Score );
    
end

6.3 initialization.m

% This function initialize the first population of search agents
function [ X ]=initialization(N,dim,ub,lb)

Boundary_no= size(ub,2); % numnber of boundaries

% If the boundaries of all variables are equal and user enter a signle
% number for both ub and lb
if Boundary_no==1
    X=rand(N,dim).*(ub-lb)+lb;
end

% If each variable has a different lb and ub
if Boundary_no>1
    for i=1:dim
        ub_i=ub(i);
        lb_i=lb(i);
        X(:,i)=rand(N,1).*(ub_i-lb_i)+lb_i;
    end
end

6.4 main.m

clear all
close all
clc

% Population size and stoppoing condition
pop_size=30;
max_iter=100;

% Define your objective function's details here
fobj = @ObjectiveFunction;
variables_no=10;
lower_bound=-100; % can be a vector too
upper_bound=100; % can be a vector too

[Silverback_Score,Silverback,convergence_curve]=GTO(pop_size,max_iter,lower_bound,upper_bound,variables_no,fobj);


figure

% Best optimal values for the decision variables
subplot(1,2,1)
parallelcoords(Silverback)
xlabel('Decision variables')
ylabel('Best estimated values ')
box on

% Best convergence curve
subplot(1,2,2)
plot(convergence_curve);
title('Convergence curve of GTO')
xlabel('Current_iteration');
ylabel('Objective value');
box on

6.5 ObjectiveFunction.m

function o = ObjectiveFunction(x)
    % change this file according to your objective function 
    o=sum(x.^2);
end

7.运行结果

在这里插入图片描述

8.参考文献

[1]Abdollahzadeh B,Gharehchopogh S F,Mirjalili S. Artificial gorilla troops optimizer: A new nature-inspired metaheuristic algorithm for global optimization problems[J]. International Journal of Intelligent Systems,2021,36(10).

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

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

相关文章

LabVIEW开发惯性测量系统

LabVIEW开发惯性测量系统 惯性导航系统是通过将惯性传感器直接绑定在载体主体上来完成制导和导航任务的系统。所以惯性测量系统主要是动态静态地测试陀螺仪和加速度计的性能。测试点和计算点数众多&#xff0c;对测试速度和精度要求高。基于上述特点&#xff0c;基于虚拟仪器软…

Web自动化 —— Selenium元素定位与防踩坑

1. 基本元素定位一 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By # selenium Service("../../chromedriver.exe") # driver webdriver.Chrome(serviceService) # driver.…

[oeasy]python0072_整数类型_int_integer_整型变量

帮助手册 回忆上次内容 上次了解的是 字符串字符串 就是 字符的串 字符串长度 可以用 len函数字符可以用下标索引 [] 可以用str 将整型数字 转化为 字符串 字符的长度本身 有长有短 ascii字符集 包括各种 转义字符 都对应 1 个字节 unicode 字符中的汉字 可能对应 3 个字节 但…

开放式耳机推荐,开放式耳机排行榜前十推荐

传统入耳式耳机长时间佩戴会给耳朵增加压力&#xff0c;在封闭状态下&#xff0c;还容易滋生细菌&#xff0c;引发耳部感染、发炎的症状&#xff0c;而开放式耳机则没有这种现象&#xff0c;开放式耳机不入耳设计&#xff0c;佩戴上耳更加稳固舒适&#xff0c;长时间使用没有压…

SOPC之NiosⅡ系统(三)

常用NIOS Ⅱ组件概括 目录 1.定时器Timer 1.1 预定义硬件配置 1.2 超时周期Timeout poriod 1.3 计数器大小Timer counter Size 1.4 寄存器Registers 2.串口UART 2.1 基础设置Basic settings 2.1.1 奇偶校验Parity 2.1.2 数据为Data bits 2.1.3 停止位Stop bits 2.1…

[论文分享]TS-TCC:基于时间和语境对比的时间序列表征学习

论文题目&#xff1a;Time-Series Representation Learning via Temporal and Contextual Contrasting 论文地址&#xff1a;https://www.ijcai.org/proceedings/2021/0324.pdf 代码地址&#xff1a;GitHub - emadeldeen24/TS-TCC: [IJCAI-21] "Time-Series Representatio…

流量经常超标,原因竟然出在“定向流量”身上!盘它!

现在网上办理的大流量手机卡套餐&#xff0c;一般都是包含通用流量和定向流量的。通用流量小编在这里就不过多解释&#xff0c; 但是定向流量如何使用&#xff0c;怎么消耗的&#xff0c;好多小伙伴们都还不太清楚。在这里&#xff0c;小编就着重讲一下&#xff0c;喜欢的记得…

08_SPI-Flash 扇区擦除实验

08_SPI-Flash 扇区擦除实验 1. 实验目标2. 操作时序2.1 扇区擦除操作指令2.2 完整扇区擦除操作时序 3. 程序框图3.1 顶层框图3.2 扇区擦除模块 4. 波形图5. RTL5.1 flash_se_ctrl5.2 spi_flash_se 6. Testbench6.1 tb_flash_se_ctrl6.2 tb_spi_flash_se 1. 实验目标 编写扇区擦…

《详细》使用ventoy制作linux to go和win to go放在u盘中《即走即用的便携式系统》,自带系统引导

通过docker部署一键爬虫&#xff0c;爬取海量电影&#xff1b;部署ai绘画&#xff1b;部署目标检测算法&#xff1b;部署ai自动上字幕&#xff1b;爬取表格总结数据&#xff1b;......只有你想象不到&#xff0c;没有它做不到 Ventoy制作U盘系统优点&#xff1a; 高效&#xf…

录音怎么转换成mp3格式?

录音怎么转换成mp3格式&#xff1f;将录音转换成MP3格式可以节省存储空间。通常&#xff0c;录音保存的文件格式是WAV等无损音频格式&#xff0c;这种音频格式相对于MP3格式占用的存储空间更大。将录音转换成MP3格式后&#xff0c;可以减小文件的大小&#xff0c;方便储存和传输…

面试题更新之-vue2x监听方面有什么缺点?所以才有了vue3.0

文章目录 vue2x监听vue3.0监听vue2x监听方面有什么缺点&#xff1f;所以才有了vue3.0 vue2x监听 在Vue.js 2.x中&#xff0c;你可以通过监听属性来响应数据的变化。以下是几种常见的监听方式&#xff1a; 监听计算属性&#xff1a;你可以使用computed属性来创建一个计算属性&…

Windows下编译安装ARPACK

ARPACK采用Arnoldi算法求解大型稀疏矩阵特征值。本文拟记录在Windows下编译安装ARPACK的流程。 零、环境 操作系统Windows 10集成开发环境Visual Studio 2019 CommunityCMake3.24.2Intel oneAPI BaseKit w_BaseKit_p_2023.1.0.47256_offline Intel oneAPI HPCKitw_HPCKit_p…

亮相亚太 CDN 峰会,火山引擎 CDN 与加速助力数字化业务加速发展

6月28日- 6月29日&#xff0c;2023 全球分布式云大会和第十二届亚太内容分发大会暨 CDN 峰会在北京成功举办。火山引擎凭借在边缘云领域持续的技术积累、丰富的场景应用、创新的产品与解决方案&#xff0c;荣登“分布式云与算力创新企业榜单”&#xff0c;“中国边缘加速创新企…

通过一个C语言程序的生命周期,了解计算机系统

我们通过跟踪这个hello程序来系统性的了解一个程序是如何被系统执行的。 #include <stdio.h>int main(){printf("hello world"); }一、信息的本质 一个C语言程序的生命周期从一个源程序开始&#xff0c;程序员用编辑器创建并保存的文本文件&#xff0c;文件后…

【Pycharm中快速校准代码格式】

Windows下&#xff1a; ctrlaltL Mac下&#xff1a; optioncommand 如何查看Pycharm的快捷键 keymap 键映射&#xff1a;计算机软件中&#xff0c;将键盘按键与特定功能或命令关联的配置。

scrapy ---分布式爬虫

导模块 pip install scrapy-redis 原来scrapy的Scheduler维护的是本机的任务队列&#xff08;待爬取的地址&#xff09;本机的去重队列&#xff08;放在集合中&#xff09;---》在本机内存中 如果把scrapy项目&#xff0c;部署到多台机器上&#xff0c;多台机器爬取的内容是重…

特斯拉上海工厂二季度交付创历史新高,员工奖金大幅增长

根据路透社的报道&#xff0c;特斯拉上海工厂的几位员工透露&#xff0c;他们在最新一季度获得了大幅增加的绩效奖金。 根据三位工厂员工的陈述&#xff0c;他们在二季度收到的奖金是他们月薪的1.5倍&#xff0c;高于之前按绩效评估获得的季度奖金&#xff08;月薪的1.2倍&…

《面试1v1》Kafka基础

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

Nacos 虚拟机设置开机自启

执行命令 : vi /lib/systemd/system/nacos.service 创建并编辑文件将下面的代码放入此文件中,其中注意自己nacos的位置,即ExecStart与ExecReload与ExecStop 后面的nacos相关路径 [Unit] Descriptionnacos Afternetwork.target[Service] Typeforking TimeoutSec0 #防止启动超时…

呼吸灯——FPGA

文章目录 前言一、呼吸灯是什么&#xff1f;1、介绍2、占空比调节示意图 二、系统设计1、系统框图2、RTL视图 三、源码四、效果五、总结六、参考资料 前言 环境&#xff1a; 1、Quartus18.0 2、vscode 3、板子型号&#xff1a;EP4CE6F17C8 要求&#xff1a; 将四个LED灯实现循环…