Я пытаюсь смоделировать уровень заряда батареи электромобиля c (EV) на основе схем вождения и парковки из таблицы набора данных. По сути, у меня есть продолжительность вождения / парковки (временные интервалы), начальная емкость аккумулятора электромобиля (SoCin), пройденное расстояние с учетом уровня энергопотребления автомобиля во время вождения и скорость зарядки. Вот как выглядят данные:
%% CONSTANTS
energy_con = 6; charge_rate = 4; SoCin = 35; SoCfull = 41;
%% ВРЕМЕННЫЕ ИНТЕРВАЛЫ
start_time ['00: 00 ''06: 30' '07: 00 ''16: 15' '17: 45']
end_time ['06: 30 ''07: 00' '16: 15 ''17: 45' '23: 59 ']
%% VARIABLES
шаблон = [ pdpdp]% парковка / схема движения
продолжительность = [6,5 0,5 9,25 1,5 6,25]
расстояние = [0 15 0 25 0]
По идее, он должен заряжаться, пока парковка, если уровень So C ниже полной емкости (charge_rate, умноженный на время парковки), и разряд во время движения с расчетным расстоянием * energy_con.
Я новичок ie в Matlab, но я пробовал следующее:
timediff = duration*60; % time of end and start time difference in minutes
singularvalue = d./timediff; % value per hour
MinScale = zeros(24*60+1,1); % from 1 to 1440 scale is created to simulate day
% in minutes (+1 is for to avoid 0 values in
% time)
traffic_DCH = zeros(24*60+1,1);
e_con = zeros(24*60+1,1);
%% INTERVAL SPREAD
for i = 1:length(end_time)
[~, ~, ~, H, MN, ~] = datevec(start_time(i));
TrSt = H*60+MN+1;
[~, ~, ~, H, MN, ~] = datevec(end_time(i));
TrEn = H*60+MN+1;
if isnan(TrEn) || isnan(TrSt)
continue
else
while SoCin < SoCfull
if pattern == 'p'
e_con(TrSt:TrEn,1) = e_con(TrSt:TrEn,1) + cumsum(ch_rate./timediff(i));
else
e_con(TrSt:TrEn,1) = e_con(TrSt:TrEn,1) - cumsum(econ_rate*singularvalue(i));%
end
end
end
конец
%TIME AXIS
close all
TimeM = 1:length(MinScale);
TimeH = TimeM/60;
figure
hold on
plot(TimeH,traffic_DCH)
xlim([1 24])
xlabel("Time (h)")
ylabel("Distance travelled (km)")
grid on
figure
% hold on
plot(TimeH,e_con)
xlim([1 24])
xlabel("Time (h)")
ylabel("SoC (kW)")
grid on
Код может быть очень плохим, я признаю, он показывает только мгновенное уменьшение или увеличение вместо условного поминутного изменения, например, при вождении или зарядке. Может быть, есть другой подход, любая помощь будет очень благодарна.