复杂交通模式下电梯调度算法的方向优化(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

2.1 方向估计

2.2 不同配置中算法的比较 

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

建筑物内的电梯系统面临着由于不可预测的乘客流量而带来的挑战,这使得电梯的调度变得复杂,以优化它们的运行。目前大多数现有的算法都是基于模式识别开发的,可能在难以分类模式的场景下不够有效,特别是当电梯操作涉及不确定的人类行为时。为了解决这个问题,本文提出了一个考虑长期和多层高峰的时间依赖优化模型,重点关注高峰楼层。提出的模型考虑了电梯的动态调度模式,并将乘客流向表示为一个关系矩阵。提出的方向优化方法包含多个函数,用于指导迭代方向,并基于经典算法提高迭代过程的效率。该方法还通过调整迭代过程来确保马尔可夫链的稳定性。所提出的方法的可行性得到了相关理论的支持,实验结果表明,方向优化算法胜过了传统算法,从而使得电梯以更低的成本实现了出色的运行效率。本文有助于开发用于调度建筑物中电梯的高效算法,从而提高了电梯组系统的性能。提出的方法不仅仅局限于电梯,还可以扩展到其他具有流量要求的交通系统中。

📚2 运行结果

2.1 方向估计

2.2 不同配置中算法的比较 

部分代码:

%% This section generates the results
% Set the number of algorithms involved in the calculation,
% set it to 3 here for DOSA, DOGA, and DOPSO.
al_num=3;
% Because the elevator states are randomly generated, 
% the number of subcalculations should be increased to 
% maintain statistical stability.
times=20;
av_comparsion=single(zeros(size(ele_num_seq,2),al_num*size(floor_num_seq,2)));
av_times=av_comparsion;

% Parallel computing for time saving  
parfor ti=1:times
    comparsion=single(zeros(size(ele_num_seq,2),al_num*size(floor_num_seq,2)));
    c_times=comparsion;
    for ele_num=ele_num_seq 
        i=ele_num-1;
        for floor_num_s=floor_num_seq
            j=floor_num_s-9;
            floor_num=2*floor_num_s;
            c=1;
            [ele_cur,ele_des,ele_dir]=ele_data_generate(ele_num,busy_floor,floor_direction,floor_num,direction);       
            
%% Generate results for SA
%% Uncomment these lines of code and changing the value of 'al_num' if necessary
%             tic
%             [~,best_value]=SA_dir(ele_num,floor_num,busy_floor,floor_direction,peak_rate,direction,ele_cur,ele_des,ele_dir);
%             c_times(i,al_num*(j-1)+c)=toc;
%             comparsion(i,al_num*(j-1)+c)=best_value;
%             c=c+1;

%% Generate results for DOSA
%% Uncomment these lines of code and changing the value of 'al_num' if necessary
            tic
            [~,best_value]=SA_dir(ele_num,floor_num,busy_floor,floor_direction,peak_rate,direction,ele_cur,ele_des,ele_dir,relation_mat);
            c_times(i,al_num*(j-1)+c)=toc;
            comparsion(i,al_num*(j-1)+c)=best_value;
            c=c+1;    
%% Generate results for PSO
%% Uncomment these lines of code and changing the value of 'al_num' if necessary
%             tic
%             [best_value]=PSO_dir(ele_num,floor_num,busy_floor,floor_direction,peak_rate,direction,ele_cur,ele_des,ele_dir);
%             c_times(i,al_num*(j-1)+c)=toc;
%             comparsion(i,al_num*(j-1)+c)=best_value;
%             c=c+1;  
%% Generate results for DOPSO
%% Uncomment these lines of code and changing the value of 'al_num' if necessary
            tic
            [best_value]=PSO_dir(ele_num,floor_num,busy_floor,floor_direction,peak_rate,direction,ele_cur,ele_des,ele_dir,relation_mat);
            c_times(i,al_num*(j-1)+c)=toc;
            comparsion(i,al_num*(j-1)+c)=best_value;
            c=c+1;   
%% Generate results for GA
%% Uncomment these lines of code and changing the value of 'al_num' if necessary
%             tic
%             [best_value]=GA_(ele_num,floor_num,busy_floor,floor_direction,peak_rate,direction,ele_cur,ele_des,ele_dir);
%             c_times(i,al_num*(j-1)+c)=toc;
%             comparsion(i,al_num*(j-1)+c)=best_value;
%             c=c+1;  
%% Generate results for DOGA
%% Uncomment these lines of code and changing the value of 'al_num' if necessary
            tic
            [best_value]=GA_(ele_num,floor_num,busy_floor,floor_direction,peak_rate,direction,ele_cur,ele_des,ele_dir,relation_mat);
            c_times(i,al_num*(j-1)+c)=toc;
            comparsion(i,al_num*(j-1)+c)=best_value;
            c=c+1;            
%% Generate results for TS
%% Uncomment these lines of code and changing the value of 'al_num' if necessary
%             tic
%             [best_value]=Tabu(ele_num,floor_num,busy_floor,floor_direction,peak_rate,direction,ele_cur,ele_des,ele_dir);
%             c_times(i,al_num*(j-1)+c)=toc;
%             comparsion(i,al_num*(j-1)+c)=best_value;
%             c=c+1;             

%% Plotting and saving

% Set the corresponding position of the results in the matrix 'av_comparsion'
resultDOSA=av_comparsion(:,1:al_num:end);
resultDOGA=av_comparsion(:,3:al_num:end);
resultDOPSO=av_comparsion(:,2:al_num:end);

figure
surf(ele_num_seq,2*floor_num_seq,resultDOSA');
ax = gca;
ax.XLabel.String = 'Elevators';
ax.XLabel.FontSize = 14;
ax.XLabel.FontName = 'Times New Roman';
ax.YLabel.String = 'Floors';
ax.YLabel.FontSize = 14;
ax.YLabel.FontName = 'Times New Roman';
ax.ZLabel.String = 'Function value';
ax.ZLabel.FontSize = 14;
ax.ZLabel.FontName = 'Times New Roman';
ax.FontSize = 14;
ax.FontName = 'Arial';
lgd.Box = 'off';  
set(gcf,'Units','centimeters','Position',[0 0 17 14]) 
set(gca,'Units','centimeters','Position',[2 1.2 14 12])
exportgraphics(gcf,'results/av-DOSA.png','Resolution',400);

figure
surf(ele_num_seq,2*floor_num_seq,resultDOGA');
ax = gca;
ax.XLabel.String = 'Elevators';
ax.XLabel.FontSize = 14;
ax.XLabel.FontName = 'Times New Roman';
ax.YLabel.String = 'Floors';
ax.YLabel.FontSize = 14;
ax.YLabel.FontName = 'Times New Roman';
ax.ZLabel.String = 'Function value';
ax.ZLabel.FontSize = 14;
ax.ZLabel.FontName = 'Times New Roman';
ax.FontSize = 14;
ax.FontName = 'Arial';
lgd.Box = 'off';  
set(gcf,'Units','centimeters','Position',[15 11 17 14]) 
set(gca,'Units','centimeters','Position',[2 1.2 14 12])

saveas(gcf,'results/av-DOGA.png','Resolution',400);

figure
surf(ele_num_seq,2*floor_num_seq,resultDOPSO');
ax = gca;
ax.XLabel.String = 'Elevators';
ax.XLabel.FontSize = 14;
ax.XLabel.FontName = 'Times New Roman';
ax.YLabel.String = 'Floors';
ax.YLabel.FontSize = 14;
ax.YLabel.FontName = 'Times New Roman';
ax.ZLabel.String = 'Function value';
ax.ZLabel.FontSize = 14;
ax.ZLabel.FontName = 'Times New Roman';
ax.FontSize = 14;
ax.FontName = 'Arial';
lgd.Box = 'off';  
set(gcf,'Units','centimeters','Position',[25 1 17 14]) 
set(gca,'Units','centimeters','Position',[2 1.2 14 12])

saveas(gcf,'av-DOPSO.png','Resolution',400);
 

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]王晗,杨卫国,孙鹏,等.基于遗传算法的层间交通模式算法研究[J].控制工程, 2008(S1):4.DOI:CNKI:SUN:JZDF.0.2008-S1-051.

[2]李强,郑永康,王瀚韬.多目标控制电梯群控调度算法的优化[J].机电工程, 2013, 30(8):5.DOI:10.3969/j.issn.1001-4551.2013.08.010.

🌈4 Matlab代码实现

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值