資源簡介
基于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
- 上一篇:三相交流異步電機矢量控制系統仿真建模
- 下一篇:GA遺傳算法matlab程序
評論
共有 條評論