资源简介

基于ATO系统的列车速度曲线优化的MATLAB代码,应用了遗传算法进行优化

资源截图

代码片段和文件信息

clear
close all
clc

%算法参数
N=200;          %初始种群个体数
age=100;        %最大遗传代数
pk=0.4;         %每次截杀比例期望,如100个父本希望截杀50个,pk=0.5
pm=0.01;        %变异概率

%决定参数
kpc=10;             %关键点个数,也就是变档位个数

%控表参数
L=1000;             %路程总长
m=2e5;              %车体质量
vm=80/3.6;          %中途限速
vh=60/3.6;          %车站限速
T0=90;              %运行时间
a=[0 0.2 0.4 0.6 0.8 -0.25 -0.45 -0.65];    %加速度设置
l_f=-5e-3;          %坡道0~500m
l_l=1e-2;           %坡道500~1000m
%权重系数,从左往右依次为速度防护、准时性、精准停车、舒适度、能耗
k=[0.4857 0.2728 0.1980 0.0303 0.0132];

KPC=13*kpc;
%遗传算法主程序
sample=zeros(20010‘single‘);  %种群总基因库,每一行为一个个体的基因代码
%默认第一个关键点在坐标0
best_len=zeros(age+11);   %记录每代最优个体适应度值
best_gene=zeros(age+1KPC‘single‘);   %记录每代最优个体基因

%对于初代的记录
sample(:11:KPC)=logical(round(rand(NKPC-10)));  %随机生成初始种群
[Saasample]=adjust(sampleavhvm);               %调整初始种群
len_new=fitness(aaSakvmvhT0Lml_fl_l);         %计算个体适应度
index=find(len_new);        %剔除0
len_new=len_new(index);
sample=sample(index:);
best=find(len_new==min(len_new));
best_len(1)=len_new(best(1));          %记录最优个体对应适应度值
best_gene(1:)=sample(best(1):);  %记录最优个体基因编码

g=1;        %记录指针
while g<=age
    samples=sample;
    len_old=len_new;                %储存每代个体父代对应适应度值
    
    %杀死不良个体
    %len_old=exp(len_old-sum(len_old)/length(find(len_old)));%为了扩大总长短的优势,故采用指数幂的方式加大差距
    sum_len=sum(len_old);       %每个个体旅行总长之和
    index=find(len_old);
    for i=1:length(index)
        if rand(1)            len_old(index(i))=0;
        end
    end
    index=find(len_old);    %寻找存活的个体
    sample_new=sample(index(randperm(length(index

评论

共有 条评论