双服务员模型假设: (1)顾客是无穷的; (2)排队的长度没有限制; (3)到达系统的顾客按先后顺序依次进入服务,即“先到先服务”; (4)对顾客的服务时间是服从(4 ,15)的均匀分布 (5)顾客到达的间隔时间是服从参数为 0.1 的指数分布 符号说明: c(i):第 i 个顾客的到达时间 b(i):第 i 个顾客的开始服务时间 e(i):第 i 个顾客服务结束时间 x(i):第 i 个顾客与第 i-1 个顾客的时间间隔 y(i):第i个顾客的服务时间 w(i):第 i 个顾客的等待时间 f1:服务台 1 的结束时间 f2:服务台 2 的结束时间 题目:假定时间以min为单位,一个工作日为8h (1)模拟一个工作日内完成服务的顾客数及顾客平均等待时间 (2)模拟100个工作日,求出平均每日完成服务的顾客数及每日顾客平均等待时间 给出对应题目的matlab代码
时间: 2024-02-24 13:58:16 浏览: 36
以下是对应题目的Matlab代码:
```matlab
% 初始化参数
c = zeros(1, 1000); % 顾客到达时间
b = zeros(1, 1000); % 顾客开始服务时间
e = zeros(1, 1000); % 顾客服务结束时间
x = zeros(1, 1000); % 顾客到达时间间隔
y = zeros(1, 1000); % 顾客服务时间
w = zeros(1, 1000); % 顾客等待时间
f1 = 0; % 服务台1的结束时间
f2 = 0; % 服务台2的结束时间
total_customer = 0; % 记录完成服务的顾客数
total_wait_time = 0; % 记录总等待时间
% 模拟一个工作日内的顾客
for i = 1:1000
if i == 1
c(i) = 0; % 第一个顾客到达时间为0
else
c(i) = c(i-1) + exprnd(10); % 顾客到达时间服从参数为0.1的指数分布
end
x(i) = c(i) - max(e(i-1), f1) - max(e(i-1), f2); % 计算顾客到达时间间隔
y(i) = unifrnd(4, 15); % 顾客服务时间服从(4, 15)的均匀分布
if f1 <= f2
b(i) = max(e(i-1), f1) + x(i); % 顾客开始服务时间为到达时间加等待时间
e(i) = b(i) + y(i); % 顾客服务结束时间为开始服务时间加服务时间
w(i) = max(0, e(i-1) + x(i) - b(i)); % 计算等待时间
f1 = e(i); % 更新服务台1的结束时间
else
b(i) = max(e(i-1), f2) + x(i);
e(i) = b(i) + y(i);
w(i) = max(0, e(i-1) + x(i) - b(i));
f2 = e(i); % 更新服务台2的结束时间
end
total_customer = total_customer + 1; % 完成服务的顾客数加1
total_wait_time = total_wait_time + w(i); % 总等待时间加上当前顾客的等待时间
end
% 计算完成服务的顾客数和顾客平均等待时间
avg_customer = total_customer;
avg_wait_time = total_wait_time / total_customer;
% 输出结果
disp(['完成服务的顾客数:' num2str(avg_customer)]);
disp(['顾客平均等待时间:' num2str(avg_wait_time) 'min']);
% 重置参数
c = zeros(1, 1000);
b = zeros(1, 1000);
e = zeros(1, 1000);
x = zeros(1, 1000);
y = zeros(1, 1000);
w = zeros(1, 1000);
f1 = 0;
f2 = 0;
total_customer = 0;
total_wait_time = 0;
% 模拟100个工作日
for day = 1:100
for i = 1:1000
if i == 1
c(i) = 0;
else
c(i) = c(i-1) + exprnd(10);
end
x(i) = c(i) - max(e(i-1), f1) - max(e(i-1), f2);
y(i) = unifrnd(4, 15);
if f1 <= f2
b(i) = max(e(i-1), f1) + x(i);
e(i) = b(i) + y(i);
w(i) = max(0, e(i-1) + x(i) - b(i));
f1 = e(i);
else
b(i) = max(e(i-1), f2) + x(i);
e(i) = b(i) + y(i);
w(i) = max(0, e(i-1) + x(i) - b(i));
f2 = e(i);
end
total_customer = total_customer + 1;
total_wait_time = total_wait_time + w(i);
end
end
% 计算每日平均完成服务的顾客数和每日顾客平均等待时间
avg_customer_per_day = total_customer / 100;
avg_wait_time_per_day = total_wait_time / total_customer;
% 输出结果
disp(['平均每日完成服务的顾客数:' num2str(avg_customer_per_day)]);
disp(['平均每日顾客等待时间:' num2str(avg_wait_time_per_day) 'min']);
```
阅读全文