2019数学建模国赛C题

2019数学建模国赛C

运用模拟仿真的思想

附录1 在一定时间段内出租车在市区的平均空载率 zhs02.m

clear;
clc;
data=xlsread('C:\Users\limaoli\Desktop\成都数据\20140804.xlsx');
index=find(data(:,2)<30.66|data(:,2)>30.68|data(:,3)<104.05|data(:,3)>104.07);
data(index,:)=[];   %筛选出市区范围的出租车
a1=find(data(:,8)>21600&data(:,8)<28800);
data_1=data(a1,:);   %筛选出6点到8点的车
a2=find(data(:,8)>28800&data(:,8)<36000);
data_2=data(a2,:);
a3=find(data(:,8)>36000&data(:,8)<43200);
data_3=data(a3,:);
a4=find(data(:,8)>43200&data(:,8)<50400);
data_4=data(a4,:);
a5=find(data(:,8)>50400&data(:,8)<57600);
data_5=data(a5,:);
a6=find(data(:,8)>57600&data(:,8)<64800);
data_6=data(a6,:);
a7=find(data(:,8)>64800&data(:,8)<72000);
data_7=data(a7,:);
a8=find(data(:,8)>72000&data(:,8)<79200);
data_8=data(a8,:);
a9=find(data(:,8)>79200&data(:,8)<86400);
data_9=data(a9,:);
waittime=0;
worktime=0;
m1=1;m2=1;m3=1;m4=1;m5=1;m6=1;m7=1;m8=1;m9=1;
for i=1:824
    if data_1(i,1)==data_1(i+1,1)
        if data_1(i,4)==1&&data_1(i+1,4)==1
            worktime=worktime+data_1(i+1,8)-data_1(i,8);
        else
            waittime=waittime+data_1(i+1,8)-data_1(i,8);
        end
    else
        kzl_1(m1)=waittime/(worktime+waittime);  %求空载率
        m1=m1+1;
        waittime=0;
        worktime=0;
    end
end

附录2 在一定时间段内出租车在机场的平均等待时间 zhs04.m

clear;
clc;

 for M=1:60   %机场已有出租车数量从1到60进行遍历
ZT=0;

for i=1:1000  
%循环并求1000次出租车在机场的等待时间
        N=M;   
%令当前出租车数量为M
        u=random('Poisson',115/1215,1,180);T=1300; n=0; 
%泊松分布产生在一定时间段内的随机数
        t=0;   %令初始时间为0
        while (N>0&&T<=3580) 
            if n==0 
                n=u(T/20+1);  
 %出租车开始排队时乘客排队数量
                T=T+20; 
                t= t+20;
            else
                n=n-1+u(T/20+1); 
%已有乘客全部上车之后剩余的乘客数量
                N=N-1; 
                t=t+20;  
                T=T+20;
            end
        end
        TT=T;tt=t; 
%令TT为机场到市区时间,tt为出租车在机场的等待时间
        ZT=ZT+t;   
 %出租车在机场的等待时间累加
        avg(M)=ZT/1000;
        %求1000次出租车在机场的等待时间的平均

end
end 
avg 
%输出在一定时间段内的出租车平均出租车在机场的等待时间

附录3 模拟乘客上车过程 zhs06.m

clear;
clc;
p=0;q=0;C=6;
for num1=1:6
    for num2=1:10
        for num3=1:10
            passengers=random('Poisson',num1*0.2,1,180);
            taxi=random('Poisson',num2*0.2,1,180);
            T=0;n=0;N=0;
            while (T<=1780)
                if  N==0
                    N=N+taxi(T/20+1);
                    n=n+passengers(T/20+1);
                    T=T+20;
                else %N>0
                    if n==0
                        n=n+passengers(T/20+1);
                        N=N+taxi(T/20+1);
                        T=T+20;
                    else %n>0
                        if (0n
                                n=n+passengers(T/20+1)-n;
                                N=taxi(T/20+1)+N-n;
                                T=T+20;
                            end
                        else% n>C
                            if N<=C
                                n=n+passengers(T/20+1)-N;
                                N=taxi(T/20+1)+N-N;
                                T=T+20;
                            else %N>C
                                n=n+passengers(T/20+1)-C;
                                N=taxi(T/20+1)+N-C;
                                T=T+20;
                            end
                        end
                    end
                end
            end
            p=p+N;
            q=q+n;
        end
        A(num1,11-num2)=p/100;
        B(num1,11-num2)=q/100;
    end
end
A;
B;
figure(1);
contour(A)
figure(2)
contour(B)

以上部分程序

你可能感兴趣的:(2019数学建模国赛C题)