💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥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.