Main Content

Results for

Hi,
I was wondering if anyone could help me with how I can simplify this part of my script, specifically scenario 1-3, so that it is easier to read. Perhaps with functions etc. (the comments are in swedish sorry heh. But the script works).
Thanks in advance!
F1_batt_till_P19 = zeros(8760,length(Effekt)); % det som batteriet laddar upp fastigheten med
F1_Elkons_batt = zeros(8760,length(Effekt)); % konsumtionen från nätet av batteriet
F1_batterilast_tot = zeros(8760,length(Effekt)); % batterilasten lagras kontenueligt.
F1_elkonsum = [];
for k = 1: length(Effekt) % går igenom alla olika effekter mellan 100 - 1000 kW
F1_last_batt = 0; % batteriet måste nollas efter varje ny effekt.
batterikapacitet = Kapacitet(k); % såhär stort är batteriet beroende på effekten. Beror på C rate (blir dubbelt så stort som effekten).
batterikapacitet_min = batterikapacitet * SOC_low/100; % undre gräns
batterikapacitet_max = batterikapacitet *SOC_high/100; % övre gräns
F1_last_batt = batterikapacitet_min; % hur mycket kapacitet har batteriet. Finns det något . Börjar tomt.
for i = 1:12 % gå igenom månaderna
mon = [31,28,31,30,31,30,31,31,30,31,30,31];
slut = mon(i)*24;
% medelkonsumtionen (i kW) per månad Elkons_months_eft(744,12)
medel_kons = mean(Elkons_months_eft(1:slut, i)); % Månadens medelkonsumtion
for m = 1:slut % gå igenom timmarna per månad
% går igenom varje timme (m), för varje månad (i).
% scenario 1 - batteriet laddar ur till medelvärdet
if Elkons_months_eft(m,i) > medel_kons
topp = Elkons_months_eft(m,i) - medel_kons; % storleken på toppen över medelvärde
% Om batteriet inte är tomt från början. Om det kan laddas ur.
if F1_last_batt > batterikapacitet_min
% Om batteriet kan laddas ur med hela efffekten utan att gå under min
if (F1_last_batt - Effekt(k)) >= batterikapacitet_min
% Om toppen är större eller lika med än vad som får kapas med batteriet - hela effekten används.
if topp >= Effekt(k) % A
F1_batt_till_P19( (24*sum(mon(1:i-1)) + m) ,k) = Effekt(k); % effekt under timmen som batteriet tillgodoser till Pyramiden 19
F1_last_batt = F1_last_batt - Effekt(k); % batteriet laddas ur med hela effekten den timmen
% Om toppen inte är större än effekten - hela toppen kapas.
else % B
F1_batt_till_P19((24*sum(mon(1:i-1)) + m) ,k) = topp;
F1_last_batt = F1_last_batt - topp;
end
% Om batteriet inte kan tömmas med hela effekten.
else
liten_effekt = F1_last_batt - batterikapacitet_min; % mängden som kan laddas ur.
% Om toppen är större än det vi kan använda – allt som är kvar används
if topp >= liten_effekt % C
F1_batt_till_P19((24*sum(mon(1:i-1)) + m) , k) = liten_effekt; % effekt under timmen som batteriet tillgodoser till Pyramiden 19
F1_last_batt = F1_last_batt - liten_effekt; % batteriet laddas ur till min
% Om toppen inte är större än det vi kan använda - hela toppen kapas
else % D
F1_batt_till_P19( (24*sum(mon(1:i-1)) + m) ,k) = topp;
F1_last_batt = F1_last_batt - topp;
end
end
end
% scenario 2 - batteriet laddar upp och tar från nätet
elseif Elkons_months_eft(m,i) < medel_kons
% Om batteriet inte är fullt
if F1_last_batt < batterikapacitet_max
% Om det får plats en laddning av hela effekten – Batteriet laddas upp
if (F1_last_batt + Effekt(k)) <= batterikapacitet_max
% Om uppladdningen inte överstiger medelvärdet – Batteriet laddas upp med effekten
if (Elkons_months_eft(m,i) + Effekt(k)) <= medel_kons % A
F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = Effekt(k); % mängden som tas från nätet
F1_last_batt = F1_last_batt + Effekt(k);
% Om uppladdningen överstiger medelvärdet – Batteriet laddas upp med det som går
else % B
till_medel = medel_kons - Elkons_months_eft(m,i);
F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = till_medel;
F1_last_batt = F1_last_batt + till_medel;
end
% Om det får plats mindre än hela efffekten i en laddning – Batteriet laddas fullt
else
plats = batterikapacitet_max - F1_last_batt; % det som får plats i batteriet
% Om elkonsumtionen ej överstiger medelvärdet – Batteriet laddas upp till max-taket
if (Elkons_months_eft(m,i) + plats) <= medel_kons % C
F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = plats;
F1_last_batt = F1_last_batt + plats;
% Om elkonsumtionen överstiger medelvärdet – Batteriet laddas upp med det som går
else % D
till_medel = medel_kons - Elkons_months_eft(m,i);
F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = till_medel;
F1_last_batt = F1_last_batt + till_medel;
end
end
end
% scenario 3 - om inget händer
elseif Elkons_months_eft(m,i) == medel_kons
% inget händer. Precis som jag vill ha det.
end
F1_batterilast_tot((24*sum(mon(1:i-1)) + m),k) = F1_last_batt; % lägger in batterilasten för timmen i en lista.
end % slut - for timmar per mån (m)
end %slut for - månaderna (i)
% tar bort den sista uppladdningen av batteriet så det kommer ner till min värdet iaf
% får ta bort min värdet kostnaden sen manuellt.
for p = 0:(8760-1)
% Om batteriet har laddning över min kvar i slutet
if F1_last_batt > batterikapacitet_min
over = F1_last_batt - batterikapacitet_min;
% Om platsen är större än eller lika med laddningen på batteriet – Batteriet töms ner till min
if F1_Elkons_batt(end-p,k) >= over
F1_Elkons_batt(end-p,k) = F1_Elkons_batt(end-p,k) - over;
F1_last_batt = batterikapacitet_min;
F1_batterilast_tot(end-p,k) = batterikapacitet_min;
% Om platsen är mindre än laddningen på batteriet – Batteriet töms med hela platsen
elseif F1_Elkons_batt(end-p,k) < over
F1_last_batt = F1_last_batt - F1_Elkons_batt(end-p,k);
F1_batterilast_tot(end-p,k) = batterikapacitet_min;
F1_Elkons_batt(end-p,k) = 0;
end
end
end
end % slut for - effekt (k)
% summerar ihop året till ett värde. Får ett värde för varje effekt.
F1_elkonsum_sum =[];
F1_batt_till_P19_sum =[];
F1_Elkons_batt_sum = [];
F1_effekttopp_medel_year = []; % medel effekttopp under året
for v = 1:length(Effekt)
F1_elkonsum(:,v) = (Elkonsumtion_eft(:,1) - F1_batt_till_P19(:,v)) + F1_Elkons_batt(:,v); % elnätskonsumtion under året
F1_elkonsum_sum(v) = sum(F1_elkonsum(:,v));
F1_batt_till_P19_sum(v) = sum(F1_batt_till_P19(:,v));
F1_Elkons_batt_sum(v) = sum(F1_Elkons_batt(:,v));
end
% figure; yyaxis right; plot(F1_elkonsum(:,20));
% hold on; plot(Elkonsumtion_eft(:,1));
% hold on; yyaxis left; plot(F1_batterilast_tot(:,20)); legend('Konsum','ladd');
% Beräknar maxeffekten (toppen) för varje månad för alla effekter. Blir en 12 x length(effekt) lista
% Den går per rad och tar maxeffekten för månaden för alla kolumner = för alla olika effekter.
F1_effekttopp_months = zeros(12,length(Effekt)); % effekttopp under månaden för alla olika effekter.
mon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for b = 1:12
F1_effekttopp_months(b,:) = max(F1_elkonsum( (24*sum(mon(1:b-1)) + 1) : 24*sum(mon(1:b)) , : ) ); % [kW]
end
% beräknar medeleffekten för året
for v = 1:length(Effekt)
F1_effekttopp_medel_year(v) = mean(F1_effekttopp_months(:,v));
end