一、粒子群算法電動汽車充電優化
1 電動汽車充電負荷估算
電動汽車的充電負荷主要與電動汽車起始充電時刻和充電時長相關,而起始充電時刻是由電動汽車使用者的到家時間決定的,充電時長主要與電動汽車的行駛裡程和充電倍率相關。
目前電動汽車還沒有大規模營運, 隻能通過統計燃油車的相關規律來代替電動汽車。對北京市某小區的私家車使用者進行統計,回家時間主要分為三種: 一是正常朝九晚五的上班族,到家時間基本服從N(17.6,1.3)的正态分布, 這類使用者占的比重最大;二是加班或者上半夜班的使用者,到家時間基本服從N (0.7,1.6)的正态分布;三是少部分後半夜上班的人,到家時間基本服從N (7.8,1.22)的正态分布。三類使用者所占的比例分别為0.68、0.24和0.08。
目前大部分私人用電動汽車的正常充電功率約為3 k W,根據以上相關資訊,可以通過蒙特卡洛計算機仿真模拟方法,求出包含上述三類使用者的居民小區平均每天一輛電動汽車的充電功率需求,如圖1所示。
圖1電動汽車一天平均充電功率需求
根據電動汽車平均一天的充電功率需求曲線,隻要設定居民小區的電動汽車使用者數量,就可以求出相應規模電動汽車的充電負荷曲線。2 光伏出力曲線和正常用電負荷
固定鋪設面積的光伏出力曲線主要與光照強度和溫度相關,在實際條件下主要表現為天氣變化和季節性變化。通過對某樓頂10 k W光伏發電系統功率輸出資料進行統計和處理,可得不同季節該光伏發電系統滿發的出力曲線,如圖2所示。
圖2四季光伏滿發出力曲線居民小區的負荷曲線主要和小區的使用者規模相關,通過對北京市某小區居民樓的實際負荷資料進行統計,可得夏季和冬季每戶平均家庭正常用電負荷曲線,如圖3所示。
圖3某小區每戶平均家庭正常負荷曲線
2 電動汽車優化充電模型
2.1 目标函數
本文以平抑小區配電網的負荷波動和降低電動汽車使用者充電電費為小區電動汽車充電優化的目标函數。以分鐘為機關,将一天分為1 440 min。
1)以平抑負荷波動為目标函數
2)以使用者電費最少為目标函數
針對上述兩個目标,考慮兩者目标函數的量綱不同,對每個目标函數進行規範化,采用線性權重和法将多目标優化問題轉化為單目标優化問題,
2.2 限制條件
居民小區電動汽車充電優化排程的限制條件主要滿足使用者使用方面和電網運作的要求。對于使用者使用方面的要求主要展現在使用者開始充電時間和充電時長;對于電網運作的要求主要展現在總功率不能超過電網節點功率的限制。
1)使用者需求限制
本限制條件的要求是要保證電動汽車在使用者離開家的時間之前完成充電。
2)電網運作限制
本限制條件的要求是要保證小區在引入電動汽車充電負荷和光伏發電輸出的情況下,電網節點的功率要維持在電網的合理安全範圍之内。
2.3求解方法
居民小區電動汽車的優化充電問題是一個多元、多變量、多限制條件以及非線性的優化問題,線性規劃等經典優化算法難以解決。這裡采用粒子群優化算法,考慮到基本粒子群算法容易陷入局部最優的問題,本文将采用改進的自适應變異粒子群優化算法進行求解。
粒子群算法即模拟鳥群的捕食行為,通過鳥群的集體協作達到群體最優值,算法通過式(9) 和式(10)實作粒子位置和速度的更新
式中,ω為慣性權重,一般在0.1 ~0.9之間取值; d=1,2,…,D;i=1,2,…,n;k為目前疊代次數;Vid為粒子的速度;Xid為粒子的位置;c1和c2為非負的常數,稱為加速度因子;r1和r2為0~1區間的随機數。
粒子群優化算法存在早熟收斂現象,需要對慣性權重和學習因子進行改進。對于慣性權重ω, 若ω在0.5~1之間随機取值,則實驗表明該算法比線性遞減政策準确度更高,收斂速度更快
對于學習因子c1和c2采用非線性反餘弦加速, c1先大後小,而c2先小後大,能解決陷入局部最優的問題。基本思想是搜尋初期粒子飛行主要參考本身的曆史資訊c1,到了後期則更加注重群體資訊c2,即
根據上述分析,得到相應的優化算法的求解過程如下:
1)初始化粒子群中粒子的位置與速度,并根據限制條件對粒子位置進行修正。
2)計算粒子的适應度值(目标函數值)。
3)将個體最優值設定為目前位置,群體最優值gbest設定為初始群體中最佳粒子的位置。
4)再根據式(9)和式(10)更新粒子速度和相應位置。
5)計算粒子群粒子的适應度,更新并記錄粒子最優位置和群體最優位置。
6)根據式(14)式(16)計算群體适應度方差σ2。
7)根據式(17)計算變異機率pm。
8)産生在0~1的随機數,如果該數小于變異機率pm,則執行式(18)的變異操作,并進行相應修正。
9)判斷是否達到結束條件,如果為真,則停止計算,并輸出優化的解;如果為假,傳回步驟4)。
二、部分源代碼
function[info,fv] = PSO2(N,c1,c2,w,M,knownEV_info,k,n,timeInterval,load_grid)
% info EVs with the start times which give the smallest fitness value
% fv the smallest fitness value% c1,c2 learning factor
% w inertia weight
% M maximum number of iterations
% D number of vehicles needed to be arranged %need to be changed to vinfo
% N number of particles
% k kth interval to be arranged% EVs with manageable start time
aEV = knownEV_info(find(knownEV_info(:,5) >= (k-1)*timeInterval)😅;
%
bEV = knownEV_info(find(knownEV_info(:,5) < (k-1)*timeInterval)😅;% initalize particles
for i = 1:N
for j=1:length(aEV(:,5))
x(i,j) = aEV(j,2) + (aEV(j,4) - aEV(j,3)- aEV(j,2))rand;
% x(i,j) = 0;
% while (x(i,j) < (k-1)15) || (x(i,j) > (aEV(j,4) - aEV(j,3)))
% x(i,j) = randn1260; % initialize the start time of vehicles
% end
v(i,j) = randn; % initialize the speed
end
end% calculate the fitness and initialize particle optimal and global optimal
for i=1:N
aEV(:,5) = x(i,:)’;
vehicle_info = sortrows([aEV;bEV],1);
p(i) = fitness(vehicle_info,n,load_grid);
y(i,:) = x(i,:);
end
% find the global optimal
pg = x(N,:);
vg = p(N);
for i=1:(N-1)
if(p(i)<vg)
pg = x(i,:);
vg = p(i);
end
end% main iteration
for t=1:M
for i=1:N % update the speed and the start time
v(i,:)=wv(i,:)+c1rand*(y(i,:)-x(i,:))+c2rand(pg-x(i,:)); for j=1:length(aEV(:,5))
if ((x(i,j)+v(i,j)) >= aEV(j,2)) && ((x(i,j)+v(i,j)) <= (aEV(j,4) - aEV(j,3)))
x(i,j) = x(i,j)+v(i,j);
end
end
aEV(:,5) = x(i,:)';
vehicle_info = sortrows([aEV;bEV],1);
if fitness(vehicle_info,n,load_grid) < p(i)
p(i)=fitness(vehicle_info,n,load_grid);
y(i,:) = x(i,:);
end
if p(i) < vg
pg = y(i,:);
vg = p(i);
end
end
Pbest(t) = vg;end
% result
aEV(:,5) = pg’;
info = sortrows([aEV;bEV],1);
fv = vg;
三、運作結果
四、matlab版本及參考文獻
1 matlab版本
2014a