1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/aZ6am5pw
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
随着高层建筑的不断增多,电梯成为人们日常生活中不可或缺的垂直交通工具。电梯群控系统(Elevator Group Control System,EGCS)旨在对多台电梯进行统一调度,以提高电梯的运行效率,减少乘客的等待时间和乘梯时间,提升服务质量。传统的电梯群控算法往往基于固定的规则和经验,难以适应复杂多变的交通流量模式。而强化学习作为一种能够通过智能体与环境交互来学习最优策略的方法,为电梯群控系统的优化提供了新的思路。Q - learning 是一种经典的无模型强化学习算法,它通过不断更新 Q 表来学习最优动作价值函数,从而实现对环境的最优控制。
4.部分源码
.............................................................
%%
load R2.mat
% 测试调度策略并生成动画
elevator_positions = ones(1, num_elevators);
request_queue = [];
num_requests = randi([Num_people/2, Num_people]);
for i = 1:num_requests
start_floor = randi([1, num_floors]);
end_floor = randi([1, num_floors]);
while end_floor == start_floor
end_floor = randi([1, num_floors]);
end
request_queue = [request_queue; start_floor, end_floor];
end
total_waiting_time = 0;
total_travel_time = 0;
num_requests = size(request_queue, 1);
while ~isempty(request_queue)
% 获取当前状态
state = get_state(elevator_positions, request_queue);
% 选择动作
[~, action] = max(Q(state, :));
% 执行动作
[new_elevator_positions, new_request_queue, reward, waiting_time, travel_time] = take_action(elevator_positions, request_queue, action);
% 更新电梯位置和请求队列
elevator_positions = new_elevator_positions;
request_queue = new_request_queue;
% 累计指标
total_waiting_time = total_waiting_time + waiting_time;
total_travel_time = total_travel_time + travel_time;
end
% 输出最终指标
total_waiting_time2=total_waiting_time;
total_travel_time2=total_travel_time;
figure;
bar([total_waiting_time1,total_waiting_time2;total_travel_time1,total_travel_time2]);
ylabel('times/s');
xlabel('1:客户等待时间, 2:电梯运行时间');
legend('强化学习训练前','强化学习训练后');
0Z_020m
---