基于遗传算法的交通灯管理研究(Matlab代码实现)

 👨‍🎓个人主页:研学社的博客  

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本文基于遗传算法(整数表示)程序,以便根据单个十字路口的交通拥堵情况优化绿色时间。给定每条道路上汽车总数的总和,我们可以对道路上的每个红绿灯获得准确的结果。请注意,生成此算法的每个解决方案并不意味着是最佳解决方案,而是足够好的解决方案。轮盘用于联轴器。

📚2 运行结果

 部分代码:

    %% Mutation
    % Create empty Matrix with length the number of mutants 
    popm=repmat(empty_individual,nm,1);
    k=1;
    while k<=nm

        % Select Parent population
        i=randi([1 nPop]); %nPop value 100
        p=pop(i);
        
        % Apply Mutation   
        nVar=4;
        nmu=ceil(mu*nVar);

        j=randi([1 nVar]);
        prosimo=randi([-1 1]);
        sigma=prosimo*0.02*(greenMax-greenMin);
        
        mutated=p.GreenNSWE(j)+sigma;
        
        popm(k).GreenNSWE = p.GreenNSWE;
        popm(k).GreenNSWE(j)=mutated;
        
        popm(k).GreenNSWE=max(popm(k).GreenNSWE,greenMin);
        popm(k).GreenNSWE=min(popm(k).GreenNSWE,greenMax);
        
        if(sum(popm(k).GreenNSWE)>current_cycle)
            continue;
        end 
        
        for j=1:nLights
            % Evaluate Mutant 
            popm(k).TotalDelay(j)=FitnessFunction(current_cycle, popm(k).GreenNSWE(j), RoadCongestionNSWE(j),RoadcapacityNSWE(j));
        end
        % Summation of delay quotients
        popm(k).TotalDelay=real(sum(popm(k).TotalDelay));
       
        k=k+1; %step
    end
    
    
    %% INVERSION
    % Create empty Matrix 
    popinv=repmat(empty_individual,nm,1);
    k=1;
    while k<=ninv
        
        % Select Parent population
        i=randi([1 nPop]);
        p=pop(i);
        
        % Apply Inversion
        
        nVar=numel(p.GreenNSWE);
        randomgene1=randi([1 4]);
        randomgene2=randi([1 4]);

        y=p.GreenNSWE;

        popinv(k).GreenNSWE=y;
        x=popinv(k).GreenNSWE(randomgene1);
        popinv(k).GreenNSWE(randomgene1)=popinv(k).GreenNSWE(randomgene2);      
        popinv(k).GreenNSWE(randomgene2)=x;
        popinv(k).GreenNSWE=max(popinv(k).GreenNSWE,greenMin);
        popinv(k).GreenNSWE=min(popinv(k).GreenNSWE,greenMax);

        if(sum(popinv(k).GreenNSWE)>current_cycle)
            continue;
        end
        
        for j=1:nLights
            % Evaluate Mutant 
            popinv(k).TotalDelay(j)=FitnessFunction(current_cycle, popinv(k).GreenNSWE(j), RoadCongestionNSWE(j),RoadcapacityNSWE(j));
        end
        % Summation of delay quotients
        popinv(k).TotalDelay=real(sum(popinv(k).TotalDelay));
              
        k=k+1;
    end
    % Make 2 rows 1
    popinv=popinv(:);
    %% Merge Population

    pop=[pop
        popc
        popm
        popinv]; %#ok
     
    % Sort New Population according to TotalDelay
    TotalDelay=[pop.TotalDelay];
    [TotalDelay, SortOrder]=sort(TotalDelay);
    pop=pop(SortOrder);
    
    % Update Worst Cost
    WorstDelay=max(WorstDelay,pop(end).TotalDelay);
    
    % Keep the Best Population from the given number
    pop=pop(1:nPop);
    TotalDelay=TotalDelay(1:nPop);
    
    % Store Best Solution Ever Found
    BestSol=pop(1);
    
    % Store Best Cost Ever Found
    BestDelay(it)=BestSol.TotalDelay;

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]stelios krasadakis (2023). Traffic Light Management Algorithm through Genetic Algorithms .

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荔枝科研社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值