全国大学生数学建模竞赛2019C题机场的出租车问题MATLAB程序

目录

前言

一、第1问

1.1 计算模型中等待时间t2MATLAB程序

1.2 计算模型中等待时间t2(灵敏度分析)MATLAB程序

二、第2问

2.1 代入t2到模型进行计算MATLAB程序

2.2 代入t2到模型进行计算(灵敏度分析)MATLAB程序

三、第3问

3.1 第3问求解MATLAB程序

3.2 第3问仿真MATLAB程序

四、第4问

4.1 第4问仿真MATLAB程序


前言

使用的数据为:上海虹桥机场T2航站楼航班数据2021.8.26(上海机场集团官网可以找到)

链接:https://pan.baidu.com/s/18VhpM8wssX2rDgSqEMwqwg 
提取码:6666

一、第1问

1.1 计算模型中等待时间t2MATLAB程序

%% 计算模型中等待时间t2
%% 每1小时划分到达航班
t1=xlsread('上海虹桥机场T2航站楼航班数据2021.8.26.xlsx','到达','A2:A211');
t1=datevec(t1);%处理时间函数

zz1=zeros(24,1);%每1小时飞机航班
f1=zeros(24,1);%每1小时每架飞机的人数
R1=zeros(24,1);%每1小时乘客乘坐出租车的比例
z1=zeros(24,1);%每1小时需要车的个数
for i=1:24 %航班划分
    tt1=find(t1(:,4)==i);
    size1=size(tt1,1);
    zz1(i,1)=size1;
end

for i=1:24
if i>=8 && i<=18 %乘坐飞机人数划分
   f1(i)=180;
else
   f1(i)=120; 
end
if i>=8 && i<=21 %乘坐出租车比例划分
   R1(i)=0.15;
else
   R1(i)=0.3; 
end
end

for i=1:24 %最终乘坐出租车的人数/1.8=多少辆出租车
    z1(i)=zz1(i)*f1(i)*R1(i)/1.8;
end
z1=round(z1);%每1小时需要车的个数

%% 每1小时划分出发航班
t2=xlsread('上海虹桥机场T2航站楼航班数据2021.8.26.xlsx','出发','A2:A215');
t2=datevec(t2);%处理时间函数

zz2=zeros(24,1);%每1小时飞机航班
f2=zeros(24,1);%每1小时每架飞机的人数
R2=zeros(24,1);%每1小时乘客乘坐出租车的比例
z2=zeros(24,1);%每1小时到达车的个数
for i=1:24 %航班划分
    tt2=find(t2(:,4)==i);
    size2=size(tt2,1);
    zz2(i,1)=size2;
end

for i=1:24
if i>=8 && i<=18 %乘坐飞机人数划分
   f2(i)=180;
else
   f2(i)=120; 
end
if i>=8+2 && i<=21+2 %乘坐出租车比例划分(需提前2小时出发,2小时后到达机场)
   R2(i)=0.15;
else
   R2(i)=0.3; 
end
end

for i=1:24 %最终乘坐出租车的人数/1.8=多少辆出租车
    z2(i)=zz2(i)*f2(i)*R2(i)/1.8;
end
z2=round(z2*0.5);%每1小时到达车的个数

plot(zz1,'linewidth',2);
xlabel('t (h)','FontSize',26);
ylabel('航班数 (架)','FontSize',26);
set(gca,'FontSize',26,'linewidth',1);
set(gca,'XTick',0:2:24);
figure
plot(zz2,'linewidth',2);
xlabel('t (h)','FontSize',26);
ylabel('航班数 (架)','FontSize',26);
set(gca,'FontSize',26,'linewidth',1);
set(gca,'XTick',0:2:24);

%% 代入模型计算
lamda=zeros(24,1);
C=zeros(24,1);
u=zeros(24,1);
F=zeros(24,1);
p=zeros(24,1);
w=zeros(24,1);
z=zeros(24,1);
p0=zeros(24,1);
c=3;%上车点个数
for t=1:24
    z(t)=z1(t);
    lamda(t)=z2(t);
t1=2;
t2=0.5;
t3=0.5;
u0=t1+t2+t3;%一辆车服务一位乘客
n0=round(60/u0);
if z(t)>n0
    C(t)=0;
else
    C(t)=n0/z(t);
end
u(t)=u0+C(t);
F(t)=1-exp(-u(t));
p(t)=lamda(t)/(c*u(t));
kk=zeros(3,1);
for k=0:c-1
kk(k+1,1)=(1/factorial(k))*(lamda(t)/u(t))^k;
end
kkk=sum(kk);
p0(t)=(kkk+(1/factorial(c))*(1/(1-p(t)))*(lamda(t)/u(t))^c)^(-1);
w(t)=abs(((c*p(t))^c*p(t))/(factorial(c)*(1-p(t))^2*lamda(t))*p0(t));
end
ind=find(isnan(w));%找出A中所有为NaN的位置标号
w(ind)=0;
w=60*w;
save('w.mat','w');%保存等待时间t2

1.2 计算模型中等待时间t2(灵敏度分析)MATLAB程序

%% 计算模型中等待时间t2(灵敏度分析)
lmd1=1.0;
lmd2=1.0;
lmd3=1.0;
lmd4=1.0;
imd5=1.0;
%% 每1小时划分到达航班
t1=xlsread('上海虹桥机场T2航站楼航班数据2021.8.26.xlsx','到达','A2:A211');
t1=datevec(t1);%处理时间函数

zz1=zeros(24,1);%每1小时飞机航班
f1=zeros(24,1);%每1小时每架飞机的人数
R1=zeros(24,1);%每1小时乘客乘坐出租车的比例
z1=zeros(24,1);%每1小时需要车的个数
for i=1:24 %航班划分
    tt1=find(t1(:,4)==i);
    size1=size(tt1,1);
    zz1(i,1)=size1;
end

for i=1:24
if i>=8 && i<=18 %乘坐飞机人数划分
   f1(i)=180*lmd1;
else
   f1(i)=120*lmd1; 
end
if i>=8 && i<=21 %乘坐出租车比例划分
   R1(i)=0.15;
else
   R1(i)=0.3; 
end
end

for i=1:24 %最终乘坐出租车的人数/1.8=多少辆出租车
    z1(i)=zz1(i)*f1(i)*R1(i)/1.8;
end
z1=round(z1);%每1小时需要车的个数

%% 每1小时划分出发航班
t2=xlsread('上海虹桥机场T2航站楼航班数据2021.8.26.xlsx','出发','A2:A215');
t2=datevec(t2);%处理时间函数

zz2=zeros(24,1);%每1小时飞机航班
f2=zeros(24,1);%每1小时每架飞机的人数
R2=zeros(24,1);%每1小时乘客乘坐出租车的比例
z2=zeros(24,1);%每1小时到达车的个数
for i=1:24 %航班划分
    tt2=find(t2(:,4)==i);
    size2=size(tt2,1);
    zz2(i,1)=size2;
end

for i=1:24
if i>=8 && i<=18 %乘坐飞机人数划分
   f2(i)=180*lmd1;
else
   f2(i)=120*lmd1; 
end
if i>=8+2 && i<=21+2 %乘坐出租车比例划分(需提前2小时出发,2小时后到达机场)
   R2(i)=0.15;
else
   R2(i)=0.3; 
end
end

for i=1:24 %最终乘坐出租车的人数/1.8=多少辆出租车
    z2(i)=zz2(i)*f2(i)*R2(i)/1.8;
end
z2=round(z2*0.5);%每1小时到达车的个数

%% 代入模型计算
lamda=zeros(24,1);
C=zeros(24,1);
u=zeros(24,1);
F=zeros(24,1);
p=zeros(24,1);
w=zeros(24,1);
z=zeros(24,1);
p0=zeros(24,1);
c=3;%上车点个数
for t=1:24
    z(t)=z1(t);
    lamda(t)=z2(t);
t1=2;
t2=0.5;
t3=0.5;
u0=t1+t2+t3;%一辆车服务一位乘客
n0=round(60/u0);
if z(t)>n0
    C(t)=0;
else
    C(t)=n0/z(t);
end
u(t)=u0+C(t);
F(t)=1-exp(-u(t));
p(t)=lamda(t)/(c*u(t));
kk=zeros(3,1);
for k=0:c-1
kk(k+1,1)=(1/factorial(k))*(lamda(t)/u(t))^k;
end
kkk=sum(kk);
p0(t)=(kkk+(1/factorial(c))*(1/(1-p(t)))*(lamda(t)/u(t))^c)^(-1);
w(t)=abs(((c*p(t))^c*p(t))/(factorial(c)*(1-p(t))^2*lamda(t))*p0(t));
end
ind=find(isnan(w));%找出A中所有为NaN的位置标号
w(ind)=0;
w=60*w;
save('wlmd.mat','w');%保存等待时间t2

二、第2问

2.1 代入t2到模型进行计算MATLAB程序

%第2问MATLAB程序
%% 代入t2到模型进行计算
load('w');%载入等待时间t2
t1=5;%送客区至排队区时间
t2=w;%排队区等待时间
t3=30;%向市中心运客时间
t4=t3;%向市中心运客时间
t5=t1+t2+t3-t4;%在市中心运客时间
s=0.5;%每公里0.5元的燃油费
x1=8;%虹桥机场到市区的距离
v=40/60;%出租车的均速40KM/h
m=4;%出租车平均每公里收费
ph1=zeros(24,1);%里程利用率

for tt=1:4
    ph1(tt)=0.30;
end
for tt=5:6
    ph1(tt)=0.45;
end
for tt=7:10
    ph1(tt)=0.55;
end
for tt=11:12
    ph1(tt)=0.75;
end
for tt=13:14
    ph1(tt)=0.55;
end
for tt=15:17
    ph1(tt)=0.45;
end
for tt=18:19
    ph1(tt)=0.55;
end
for tt=20:21
    ph1(tt)=0.35;
end
for tt=22:24
    ph1(tt)=0.30;
end

tA=zeros(24,1);
DQA=zeros(24,1);
tB=zeros(24,1);
PB=zeros(24,1);
CB=zeros(24,1);
QB=zeros(24,1);
DQB=zeros(24,1);
for t=1:24
%A方案
tA(t)=t1+t2(t)+t3;%A方案的总时间
PA=x1*m;%A方案载客至市区赚的钱
CA=s*x1;%A方案油耗
QA=PA-CA;%A方案收益
DQA(t)=QA/tA(t);%A方案单位时间收益

%B方案
tB(t)=t4+t5(t);%B方案的总时间
PB(t)=ph1(t)*(t5(t)*v)*m;%B方案载客至市区赚的钱
CB(t)=s*(x1+t5(t)*v);%B方案油耗
QB(t)=PB(t)-CB(t);%B方案收益
DQB(t)=QB(t)/tB(t);%B方案单位时间收益
end
DQ=DQA-DQB;
for i=1:7 %无飞机时间段赋0
    DQ(i)=0;
end

%% 绘图(位于红线下的为可选择返回市区B方案)
x=8:24;
v=DQ(8:24);
xq=8:0.01:24;
vq=interp1(x,v,xq,'spline');%一维三次样条插值

figure
plot(xq,vq,'linewidth',2)
hold on
plot([0 24],[0 0],'linewidth',2);%%10:22~12:38可直接去市区接单(边界值)

xlabel('t (h)','FontSize',26);
ylabel('DQ (¥/min)','FontSize',26);
set(gca,'FontSize',26,'linewidth',1);
set(gca,'XTick',0:2:24);
axis([0 24 -0.5 1])

2.2 代入t2到模型进行计算(灵敏度分析)MATLAB程序

%% 代入t2到模型进行计算(灵敏度分析)
lmd1=1.0;
lmd2=1.0;
lmd3=1.0;
lmd4=1.0;
lmd5=1.0;
load('wlmd');%载入等待时间t2
t1=5;%送客区至排队区时间
t2=w;%排队区等待时间
t3=30;%向市中心运客时间
t4=t3;%向市中心运客时间
t5=t1+t2+t3-t4;%在市中心运客时间
s=0.5*lmd5;%每公里0.5元的燃油费
x1=8*lmd4;%虹桥机场到市区的距离
v=40/60;%出租车的均速40KM/h
m=4*lmd3;%出租车平均每公里收费
ph1=zeros(24,1);%里程利用率
for tt=1:4
    ph1(tt)=0.30;
end
for tt=5:6
    ph1(tt)=0.45;
end
for tt=7:10
    ph1(tt)=0.55;
end
for tt=11:12
    ph1(tt)=0.75;
end
for tt=13:14
    ph1(tt)=0.55;
end
for tt=15:17
    ph1(tt)=0.45;
end
for tt=18:19
    ph1(tt)=0.55;
end
for tt=20:21
    ph1(tt)=0.35;
end
for tt=22:24
    ph1(tt)=0.30;
end
ph1=ph1*lmd2;

tA=zeros(24,1);
DQA=zeros(24,1);
tB=zeros(24,1);
PB=zeros(24,1);
CB=zeros(24,1);
QB=zeros(24,1);
DQB=zeros(24,1);
for t=1:24
%A方案
tA(t)=t1+t2(t)+t3;%A方案的总时间
PA=x1*m;%A方案载客至市区赚的钱
CA=s*x1;%A方案油耗
QA=PA-CA;%A方案收益
DQA(t)=QA/tA(t);%A方案单位时间收益

%B方案
tB(t)=t4+t5(t);%B方案的总时间
PB(t)=ph1(t)*(t5(t)*v)*m;%B方案载客至市区赚的钱
CB(t)=s*(x1+t5(t)*v);%B方案油耗
QB(t)=PB(t)-CB(t);%B方案收益
DQB(t)=QB(t)/tB(t);%B方案单位时间收益
end
DQ=DQA-DQB;
for i=1:7 %无飞机时间段赋0
    DQ(i)=0;
end
%% 绘图(位于红线下的为可选择返回市区B方案)
x=8:24;
v=DQ(8:24);
xq=8:0.01:24;
vq=interp1(x,v,xq,'spline');%一维三次样条插值

ind0=find(vq<0);%找出A中小于0的位置标号
count=size(ind0,2);
t0=count*0.6;%前往市区时间段长度(min)

plot(xq,vq,'linewidth',2)
hold on
plot([0 24],[0 0],'linewidth',2);

xlabel('t (h)','FontSize',26);
ylabel('DQ (¥/min)','FontSize',26);
set(gca,'FontSize',26,'linewidth',1);
set(gca,'XTick',0:2:24);
axis([0 24 -0.5 1])

三、第3问

3.1 第3问求解MATLAB程序

%第3问MATLAB程序
b1=0.1;
b2=0.2;
b3=0.3;
a1=@(k) 1-exp(-b1*k);
a2=@(k) 1-exp(-b2*k);
a3=@(k) 1-exp(-b3*k);
Q=zeros(1,1);
for k=1:5
t1=120;%出租车从蓄车池到上车点时间
t2=30;%乘客从上车点到上车时间
t3=60;%出租车从上车点启动离开时间
T1=t1+(k-1)*a1(k)*t1;%T1表达式
T2=t2+(k-1)*a2(k)*t2;%T2表达式
T3=t3+(k-1)*a3(k)*t3;%T3表达式
Q(k,1)=(T1+T2+T3)/(2*k);
end

3.2 第3问仿真MATLAB程序

%% 灵敏度分析
k=66.1;
s=1; %服务台的个数
mu=3600/k; %单位时间内能服务的顾客数
lambda=32; %单位时间内到达的顾客数

ro=lambda/mu;
ros=ro/s;
sum1=0;

for i=0:(s-1) sum1=sum1+ro.^i/factorial(i); end

sum2=ro.^s/factorial(s)/(1-ros);

p0=1/(sum1+sum2);
p=ro.^s.*p0/factorial(s)/(1-ros);
Lq=p.*ros/(1-ros);
L=Lq+ro;
W=L/lambda;
Wq=Lq/lambda;
fprintf('排队等待的平均人数为%5.2f人\n',Lq)
fprintf('系统内的平均人数为%5.2f人\n',L)
fprintf('平均逗留时间为%5.2f分钟\n',W*60)
fprintf('平均等待时间为%5.2f分种\n',Wq*60)

四、第4问

4.1 第4问仿真MATLAB程序

%第4问MATLAB程序
P=zeros(100,1);
lamda0=zeros(24,1);
for t=1:24
for lamda=0.01:0.01:1
T1=50;%送长途时间
m=5;%出租车平均每公里收费
v=40/60;%出租车的均速40KM/h
m1=0.5;%%每公里0.5元的燃油费

ph1=zeros(24,1);%里程利用率

for tt=1:4
    ph1(tt)=0.30;
end
for tt=5:6
    ph1(tt)=0.45;
end
for tt=7:10
    ph1(tt)=0.55;
end
for tt=11:12
    ph1(tt)=0.75;
end
for tt=13:14
    ph1(tt)=0.55;
end
for tt=15:17
    ph1(tt)=0.45;
end
for tt=18:19
    ph1(tt)=0.55;
end
for tt=20:21
    ph1(tt)=0.35;
end
for tt=22:24
    ph1(tt)=0.30;
end

T0=15;%排队时间
T2=lamda*T1;%送短途时间
P1=v*T1*(m-m1)+2*T2*v*(ph1(t)*m-m1);
P2=(T1+T2)*v*m-(2*T2+T1)*v*m1;
% P(round(lamda*100),1)=abs(P1-P2);
P(round(lamda*100),1)=abs((P1+P2)/(T0+2*T2+T1)-P1/(T0+T1));
end
[lamda00]=find(P==min(P));
lamda0(t,1)=lamda00/100;
end
  • 49
    点赞
  • 278
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
全国大学生数学建模竞赛2018年A是关于高温作业专用服装设计的问题。为了解答这个问题,我们可以使用Matlab程序进行计算和分析。 该程序的主要功能包括以下几点: 1. 数据导入和处理:程序应能够导入相关数据,包括高温作业环境的温度、湿度等参数,以及参与工作的人员的身高、体重等身体信息。这些数据将用于后续的计算和设计。 2. 人体热平衡模型:根据人体热平衡理论,我们可以建立数学模型来计算高温环境下人体的热平衡状况。程序可以根据输入的数据和模型参数,计算出人体的热产生、传递和散发等参数,并判断人体是否处于热平衡状态。 3. 材料特性和热传导计算:程序可以根据材料的热传导特性和热阻等参数,计算出高温作业服装的热传导情况。根据人体热平衡模型和计算得到的材料热传导情况,可以进行合理的服装设计和材料选择,以确保工作人员的身体舒适度和安全性。 4. 结果输出和优化设计:程序应能够输出计算结果,并对设计进行评估和优化。通过分析不同参数的影响,我们可以得到最佳的高温作业专用服装设计方案,并为实际应用提供可靠的参考。 综上所述,通过使用Matlab程序进行计算和分析,我们可以有效地解决全国大学生数学建模竞赛2018年A中关于高温作业专用服装设计的问题,并为相关领域的研究和实践提供有益的指导和决策依据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖—果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值