【优化调度】基于帝国企鹅算法求解多扇区航空调度问题附matlab代码

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 【优化调度】基于帝国企鹅算法求解多扇区航空调度问题附matlab代码

1 简介

基于帝国企鹅算法求解多扇区航空调度问题

2 部分代码

function [bestY,bestX,recording]=AFO(x,y,option,data)%% Authority%Author: Zhe Yang% E-mail: 454170989@qq.com% School:University of Manchester%% Input% x----positions of initialized populaiton% y----fitnesses of initialized populaiton% option-----parameters set of the algorithm% data------Pre-defined parameters% This parameter is used for solving complex problems is passing case data%% outPut% bestY ----fitness of best individual% bestX ----position of best individual% recording ---- somme data was recorded in this variable%% initializationpe=option.pe;L=option.L;gap0=option.gap0;gap=gap0;dim=option.dim;recording.bestFit=zeros(option.maxIteration+1,1);recording.meanFit=zeros(option.maxIteration+1,1);At=randn(option.numAgent,option.dim);count=1;%% center of population[y_c,position]=min(y);x_c=x(position(1),:);At_c=At(position(1),:);%% memory of populationy_m=y;x_m=x;%% update recordingrecording.bestFit(1)=y_c;recording.meanFit(1)=mean(y_m);%% main loopfor iter=1:option.maxIteration    %Dmp(['AFO,iter:',num2str(iter),',minFit:',num2str(y_c)])    %% Moving Strategy I for center of population    if rem(iter, gap)==0        c0=exp(-30*(iter-gap0)/option.maxIteration); % EQ.2-11        Dx=ones(1,dim);        Dx=c0*Dx/norm(Dx)*norm(option.v_ub-option.v_lb)/2; %EQ.2-12        % +△x        for j=1:dim            tempX(j,:)=x_c;             tempX(j,j)=x_c(1,j)+Dx(j);            if tempX(j,j)>option.ub(j)                tempX(j,j)=option.ub(j);                Dx(1,j)=tempX(j,j)-x_c(1,j);            end            if tempX(j,j)<option.lb(j)                tempX(j,j)=option.lb(j);                Dx(1,j)=tempX(j,j)-x_c(1,j);            end            tempY(j,:)=option.fobj(tempX(j,:),option,data);            if tempY(j)*y_c<0                g0(1,j)=(log(tempY(j))-log(y_c))./Dx(j); %EQ.2-18            else                temp=[tempY(j),y_c];                temp=temp+min(temp)+eps;                g0(1,j)=(log(temp(1))-log(temp(2)))./Dx(j);            end                 g0(isnan(g0))=0;        end        G0=-g0(1,:)*norm(option.v_ub-option.v_lb)/2/norm(g0(1,:)); % part of Eq 2-18         G0(1,G0(1,:)>option.v_ub)=G0(1,G0(1,:)>option.v_ub)/max(G0(1,G0(1,:)>option.v_ub))*max(option.v_ub(G0(1,:)>option.v_ub));        G0(1,G0(1,:)<option.v_lb)=G0(1,G0(1,:)<option.v_lb)/min(G0(1,G0(1,:)<option.v_lb))*min(option.v_lb(G0(1,:)<option.v_lb));        G01=G0;        % -△x        Dx=-ones(1,dim);        Dx=c0*Dx/norm(Dx)*norm(option.v_ub-option.v_lb)/2;        for j=1:dim            tempX(j+dim,:)=x_c;            tempX(j+dim,j)=x_c(1,j)+Dx(j);            if tempX(j+dim,j)>option.ub(j)                tempX(j+dim,j)=option.ub(j);                Dx(1,j)=tempX(j,j)-x_c(1,j);            end            if tempX(j+dim,j)<option.lb(j)                tempX(j+dim,j)=option.lb(j);                Dx(1,j)=tempX(j,j)-x_c(1,j);            end        if minY<y_c            y_c=tempY(no);            x_c=tempX(no,:);        end        if rand>(no-dim*2)/(option.numAgent-dim*2)*(option.maxIteration-iter)/option.maxIteration            gap=max(option.gapMin,gap-option.dec); %EQ.2-15        end    else        for i=1:option.numAgent            p =tanh(abs(y(i)-y_c)); %EQ.2-30              if rand<p*(option.maxIteration-iter)/option.maxIteration                % EQ 2-28                At(i,:)=option.w2*At(i,:)+option.w4*rand(size(x(1,:))).*(x_c-x(i,:))+option.w5*rand(size(x(1,:))).*(x_m(i,:)-x(i,:));                x(i,:)=x(i,:)+At(i,:); %EQ 2-29                x(i,:)=checkX(x(i,:),option,data);                tempY(i,:)=y(i);                y(i)=option.fobj(x(i,:),option,data);                if tempY(i,:)<y(i)                    for j=1:dim                        r1=randi(option.numAgent);                        r2=randi(option.numAgent);                        v(i,j)=rand.*(x_m(r1,j)-x_m(r2,j))*-sign(y_m(r1)-y_m(r2));                        if std(x_m(:,j))<=exp(-20*iter/option.maxIteration)*(option.v_ub(j)-option.v_lb(j))/2                            if v(i,j)==0                                v(i,j)=randn*(option.v_ub(j)-option.v_lb(j))/2;                            else                                v(i,j)=rand.*sign(x_m(r1,j)-x_m(r2,j))*-sign(y_m(r1)-y_m(r2))*(option.v_ub(j)-option.v_lb(j))/2;                            end                        end                    end                end            else                g0=randn(size(At_c));                r1=randi(option.numAgent);                r2=randi(option.numAgent);    end    if count>L        for i=1:option.numAgent            x(i,:)=(option.ub-option.lb)*rand+option.lb;            y(i)=option.fobj(x(i,:),option,data);            if y(i)<y_m(i)                y_m(i)=y(i);                x_m(i,:)=x(i,:);                if y_m(i)<y_c                    y_c=y_m(i);                    x_c=x_m(i,:);                    At_c=At(i,:);                end            end        end        count=0;    end    %% 更新记录    recording.bestFit(1+iter)=y_c;    recording.meanFit(1+iter)=mean(y_m);%     recording.std(1+iter)=mean(std(x_m));%     recording.DC(1+iter)=norm(x_m-repmat(x_c,option.numAgent,1));%     recording.x1(1+iter,:)=x(1,:);endbestY=y_c;bestX=x_c;end%%

3 仿真结果

4 参考文献

[1]芮钧, 陈守伦. MATLAB粒子群算法工具箱求解水电站优化调度问题[J]. 中国农村水利水电, 2009(1):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
3天前
|
人工智能 算法 大数据
Linux内核中的调度算法演变:从O(1)到CFS的优化之旅###
本文深入探讨了Linux操作系统内核中进程调度算法的发展历程,聚焦于O(1)调度器向完全公平调度器(CFS)的转变。不同于传统摘要对研究背景、方法、结果和结论的概述,本文创新性地采用“技术演进时间线”的形式,简明扼要地勾勒出这一转变背后的关键技术里程碑,旨在为读者提供一个清晰的历史脉络,引领其深入了解Linux调度机制的革新之路。 ###
|
14天前
|
人工智能 算法 数据安全/隐私保护
基于遗传优化的SVD水印嵌入提取算法matlab仿真
该算法基于遗传优化的SVD水印嵌入与提取技术,通过遗传算法优化水印嵌入参数,提高水印的鲁棒性和隐蔽性。在MATLAB2022a环境下测试,展示了优化前后的性能对比及不同干扰下的水印提取效果。核心程序实现了SVD分解、遗传算法流程及其参数优化,有效提升了水印技术的应用价值。
|
13天前
|
存储 缓存 算法
优化轮询算法以提高资源分配的效率
【10月更文挑战第13天】通过以上这些优化措施,可以在一定程度上提高轮询算法的资源分配效率,使其更好地适应不同的应用场景和需求。但需要注意的是,优化策略的选择和实施需要根据具体情况进行详细的分析和评估,以确保优化效果的最大化。
|
17天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
2天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
4天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。
|
3天前
|
机器学习/深度学习 算法 芯片
基于GSP工具箱的NILM算法matlab仿真
基于GSP工具箱的NILM算法Matlab仿真,利用图信号处理技术解析家庭或建筑内各电器的独立功耗。GSPBox通过图的节点、边和权重矩阵表示电气系统,实现对未知数据的有效分类。系统使用MATLAB2022a版本,通过滤波或分解技术从全局能耗信号中提取子设备的功耗信息。
|
3天前
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
16 3
|
15天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。

热门文章

最新文章