⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avi_viol.m

📁 遗传算法例程:通过MATLAB
💻 M
字号:
function y = Avi_Viol(FS,FSt,zs,ChromT,ChromL,Cgf,Caf,Tpdfs,Tprfs,Qfs,Mgfs,Mafs,FSu,FSd,F,T)

% FS--计划航班编号序列,大小1*F(函数中没有出现,可以不用),FSt--计划航班类型序列,大小1*F(2表示大型机,1表示中型机,没有小型机);
% Fdashs--连续飞行的航班序列(为F的一个子集,表示为一个2进制串(大小1*F'),第i个位置为1表示连续航班序列包括第i个航班); --本函数没有用到
% FSu--计划航班序列的各个起飞机场,;FSd--计划航班序列的各个降落机场; --本函数没有用到,二者大小都是1*F;
% zs--各个航班是否取消的向量,为一个二进制串,大小1*F,第i个位置为1表示第i个航班取消,为0表示第i个航班不取消(这是一个决策向量);
% Cgf--地面延误的单位时间成本(对大型机); Caf--空中延误的单位时间成本(对大型机),这两个都是单一数字
% Tpdfs/Tprfs--这是计划航班序列的计划起飞和降落的时间段(都是1*F向量);
% Mgfs/Mafs--计划航班序列的依次最大地面/空中的等待时间数(都是1*F向量);--本函数没有用到
% TdfsM/TrfsM--计划航班序列的实际起飞/降落时间(为两个矩阵,大小都为F行T列,每一行代表一个航班的起(降)情况,且每行只有一个1,代表航班在该时刻位置起(降));
% Qfs--计划航班序列的取消成本,为1*F向量


StdTime = Tprfs - Tpdfs;

% 任意航班降落的时间总是落后于起飞的时间
% 实际飞行时间不得小于预定飞行时间

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    
% TdfsM/TrfsM--计划航班序列的实际起飞/降落时间(为两个矩阵,大小都为F行T列,每一行代表一个航班的起(降)情况,且每行只有一个1,代表航班在该时刻位置起(降));
TdfsM = zeros(F,T);
TrfsM = TdfsM;
for mm = 1:F
    for nn = 1:T
        if ChromT(mm) == nn
            TdfsM(mm,nn) = 1;
        end
        if ChromL(mm) == nn
            TrfsM(mm,nn) = 1;
        end
    end
end

yr = 0;

    for t = 1:T
        reco(t) = OffCon(FS,zs,TdfsM,FSu,1,t);
        yc(t) = reco(t) - 9;
        yr = yr + max(yc(t),0);
    end

    for t = 1:T
        recl(t) = LandCon(FS,zs,TrfsM,FSd,1,t);
        yc(t+T) = recl(t) - 10;     
        yr = yr + max(yc(t+T),0);
    end


for t = 1:T
    if reco(t) < 4
        yc(t+2*T) = recl(t) - 10;
    end
    if reco(t) >= 4 & reco(t) <7
        yc(t+2*T) = -(49 - 3.*recl(t) - 4.*reco(t));
    end
    if reco(t) == 7 | reco(t) == 8
        yc(t+2*T) = -(21 - recl(t) - 2.*reco(t));
    end
    if reco(t) >= 9
        yc(t+2*T) = reco(t) - 9;
    end
    yr = yr + max(yc(t+2*T),0);
end

y = yr;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -