Linear Engine / L2V4bGlicmlzL2R0bC9kM18xL2FwYWNoZV9tZWRpYS83MTc1
.pdfCsaba Toth-Nagy |
Linear engine development for series hybrid electric vehicles |
Results1=[Addition;Results1]
ChromResults=[Chrom;ChromResults]
TargetResultsForTraining=[Efficienc;TargetResultsForTraining]
Perficiency=[[Preformance,NNPredEfficiency];Perficiency] savefile = sprintf('ResultsFreeTravelForNN%d',filecounter); savefileChrom = sprintf('ChromResultsForNN%d',filecounter);
savefileTarget = sprintf('TargetResultsForTraining%d',filecounter); savefileNN = sprintf('NNperformanceandprediction%d',filecounter);
[raws,columns]=size(Results1);
FinalResults=Results1(:,11); save FinalResults FinalResults filecounter=raws+1;
save savefile
save (savefile,'Results1')
save (savefileChrom,'ChromResults')
save (savefileTarget,'TargetResultsForTraining') save (savefileNN,'Perficiency')
save filecounter filecounter
save Results12forTraining Results1
Webie
t=[1:1:400];
T=1;
a=2;
% Threshold=0.037; Qp=(1-(Thresholdinj-FreeTravel/2)/(StrokeEffective))*HeatAddition;%(i); Qd=(Thresholdinj-FreeTravel/2)/StrokeEffective*HeatAddition;%(i); tp=20;
td=200;%10,20,30,60,100 Mp=3;
Md=.5;
en=0; for=1:length(t)
Q(j)=(a*Qp/tp*(Mp+1)*(j/tp)^Mp*exp(-a*(j/tp)^(Mp+1))+a*Qd/td*(Md+1)*
(j/td)^Md*exp(-a*(j/td)^(Md+1)));en=en+Q(j);
end
Calc
function [Press,Temp,PressEnergy,HeatLoss] = Calc(StrokeEffective,Stroke,Position,
193
Csaba Toth-Nagy |
Linear engine development for series hybrid electric vehicles |
PositionPrev,VolumePrev,PressPrev,PressPrevPrev,TempPrev,Surface,Volume,Press
EnergyPrev,
WebieCounter,Q,time,frequency,Diameter);
Pambient=100000;
Tambient=273+90;
if TempPrev<=Tambient
TempPrev=Tambient;
end
Gamma=1.4;
C2=3.24e-3; A=(Diameter)^2*pi/4;
VolumeOfCylinder=A*(StrokeEffective);
DensityOfAir=1.23;
MassOfAir=DensityOfAir*VolumeOfCylinder; R=8.3144/28.9e-3;
if and(PressPrev==PressPrevPrev, Q==0)
C1=2.28; else
C1=6.18;
end
cc=(C1*frequency*2*Stroke+C2*VolumeOfCylinder*TempPrev/PressPrev/VolumePrev*(Press Prev-
PressPrevPrev)); hg=3.26*Diameter^(-0.2)*abs(PressPrev/1000)^0.8*TempPrev^(-0.53)*cc^0.8; HeatLoss=Surface*(TempPrev-Tambient)*hg*time;
if Q==0
Dp=Gamma*PressPrev/Volume*(Volume-VolumePrev)+(Gamma-1)*(HeatLoss)/Volume; %
else
Dp=Gamma*PressPrev/Volume*(Volume-VolumePrev)+(Gamma-1)*(-Q+HeatLoss)/ Volume; %
end Press=PressPrev-Dp;
Temp=81+abs(Press)*Volume/MassOfAir/R; if Position<0
PressEnergy=(Press*VolumePrev-Pambient*VolumeOfCylinder)/(Gamma-1);
else PressEnergy=-abs(Q)+HeatLoss+PressEnergyPrev-((Press)*(Position-PositionPrev))*A;
end
194
Csaba Toth-Nagy |
Linear engine development for series hybrid electric vehicles |
CalcZero
function [Press,Temp,PressEnergy,HeatLoss] = CalcZero(Tambient,Pambient); cc=0;
hg=0;
HeatResistance=0;
HeatLoss=0;
Dp=0;
Press=Pambient;
Temp=Tambient;
PressEnergy=0;
Shift
function [Press]=Shift(Press) Temporary=Press(5000:14999); clear Press
Press=Temporary;
Freq
if or(Position(i)>=0 & Position(i-1)<=0,Position(i)<=0 & Position(i-1)>=0)zerocross1=i;
frequenci(i)=Frequency/(zerocross1-zerocross2)/2; tempzerocross=zerocross3;
zerocross3=zerocross2;
zerocross2=zerocross1;
else frequenci(i)=frequenci(i-1);
end
Chrom2NNInputForNeural
% load ChromResultsForNN51 [raws,columns]=size(ChromResults) Chromosome=ChromResults;
for k=1:raws
% Bore = 38 mm - 152 mm Diameter=bin2dec(Chromosome(k,1:10))/1024; %Stroke Effective = Bore/2 x 0.5 ... 1.5
StrokeEffective=bin2dec(Chromosome(k,11:20))/1024; %Free Travel = Stroke Effective x -0.5 ... 0.5 FreeTravel=bin2dec(Chromosome(k,21:30))/1024;
%Mass = Bore^2/4*pi*SE*RoAl(4700kg/m^3) x 0.5 ... 1.5/5 m=bin2dec(Chromosome(k,31:40))/1024;
%Fuel Injected = Bore^2/4*pi*SE*RoAir(1.23 kg/m^3)/14.7 x 0.1 ... 1 if FreeTravel<0
195
Csaba Toth-Nagy |
Linear engine development for series hybrid electric vehicles |
FuelInjected=(bin2dec(Chromosome(k,41:50
))/1024)*(StrokeEffective+FreeTravel)/St
rokeEffective; else
FuelInjected=bin2dec(Chromosome(k,41:50))/1024;
end
%InjTiming = Stroke Effective x 0.1 ... 0.9 InjTiming=bin2dec(Chromosome(k,51:60))/1024; %IgnTiming = Stroke Effective x 0.1 ... 0.5 IgnTiming=bin2dec(Chromosome(k,61:70))/1024;
% clear ResultsForTraining
ResultsForTraining(:,k)=[Diameter,StrokeEffective,FreeTravel,m,FuelInjected(1
),InjTiming,IgnTiming]';
save ResultsForTraining ResultsForTraining;
196