Unable to populate trip usage tripusage=zeros(1,288) with my result tripusage(k)= (p1*x^2 + p2*x + p3) *fivemindist;
    4 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
QatarEV=174680;
% aveDemand=zeros(1,288);
tripusage=zeros(1,288);
% for iteration=1:100
% n = iteration;
time= 1:288;
sedanShare=0.46;
num.sedans = QatarEV * sedanShare;
num.sedans = round(num.sedans);
num.suvs = 174670 - num.sedans;
sedanTypes = ["Tesla3", "MercedesEQS", "TeslaS", "Hyundai"];
Sedan_Battery = [54;107.8;103;64]*1e3;
%sedan battery packs in kWh
suvTypes = ["Mercedes", "Nissan", "Toyota", "Renault", "VW"];
SUV_Battery = [28;40;40;41;35.8]*1e3;
charger=[3.6 7.2 22 50];
demand=zeros(1,288);
%DL driving licence, AP is active persons
% tripsedan= 0.357 +1.3681*DL + 2.4914*AP ;
% tripSUV= 0.5323 +0.9815*DL + 2.3961*AP;
tripsplit = [1 1; 1 2; 4 4; 8 5; 10 6; 9 8; 7 10; 7 7; 9 6; 7 9; 7 7; 8 8; 7 10; 8 7; 4 6; 2 4];
timeWindows2 = {[72 84], [84 96], [96 108],[108 120], [120 132],[132 144],[144 156],[156 168],[168 180],[180 192],[192 204],[204 216],[216 228],[240 252],[252 264],[264,276]};
tripmonday=[1,1,4,8,10,9,7,7,9,7,7,8,7,8,4,2];
timeWindows = {'6-7am', '7-8am', '8-9am', '9-10am', '10-11am', '11am-12pm', '12-1pm', '1-2pm', '2-3pm', '3-4pm', '4-5pm', '5-6pm', '6-7pm', '7-8pm', '8-9pm', '9pm-10pm'};
% Normalize the values in tripmonday
tripmonday_norm = tripmonday / sum(tripmonday);
% Compute the cumulative sum of the normalized probabilities
tripmonday_cum = cumsum(tripmonday_norm);
% temp details
t = readtable("qatarFIXED.csv",Range="A2:B745");
t.Properties.VariableNames = ["date","temp"];
t.date = datetime(t.date);
plot(0:23,reshape(t.temp,31,24)')
legend("July" + (1:31),Location="eastoutside")
ylabel("temperature")
xlabel("hour")
[g,hour] = findgroups(t.date.Hour);
meanTemp = splitapply(@mean,t.temp,g);
stdTemp = splitapply(@std,t.temp,g);
tempinfo=table(hour,meanTemp,stdTemp);
disp(tempinfo);
hold on
plot(0:23,meanTemp,'k:',LineWidth=3)
% Set the number of samples to generate for each hour
n_samples = 1;
% Pre-allocate a matrix to hold the generated temperatures
temperatures = zeros(n_samples, 24);
% Loop through each hour of the day
for i = 1:24
    % Extract the mean and standard deviation for the current hour
    mu = meanTemp(i);
    sigma = stdTemp(i);
    % Generate a list of temperatures for the current hour
    temperatures(:, i) =(normrnd(mu, sigma, n_samples, 1));
    tempertaures= repelem(temperatures,12);
end
% Index 1: 1-2 hours/40-100km
index1_percent = 15.38;
% Index 2: 2-3 hours/90-180km
index2_percent = 34.07;
% Index 3: 3-4 hours/90-180km
index3_percent = 47.25;
% Index 4: over 4 hours/over 180km
index4_percent = 3.3;
%generate time windows for each sedan based on probability
    for i = 1:num.sedans
        chType=1+randi(3,1,1);%charger is Level 2 or fast
        btType=randi(4,1,1);%indexfor battery size
        sedanChosen = sedanTypes(btType);
        SoCLevel=round(20 + (40-20).*rand(1,1));
        DL = randi(2,1,1)-1;
        AP = randi(3,1,1);
        tripsedan= floor(0.357 +1.3681*DL + 2.4914*AP) ;
        chosen_car_coeffs = coeffs_table(strcmp(coeffs_table.Vehicle, sedanChosen), :);
       % Extract the p1, p2, p3 values for the chosen car
        p1 = chosen_car_coeffs.p1;
        p2 = chosen_car_coeffs.p2;
        p3 = chosen_car_coeffs.p3;
        rand_num = rand();
            % Determine the range of hours and distance based on the random number
            if rand_num < index1_percent/100
    % Generate random number of 5-minute intervals between 1-2 hours
             hours = randi([12,24])/12;
             distance = randi([0,40]);
             fivemindist= distance/(hours*12);
           elseif rand_num < (index1_percent + index2_percent)/100
             % Generate random number of 5-minute intervals between 2-3 hours
            hours = randi([24,36])/12;
            distance = randi([40,100]);
            fivemindist= distance/(hours*12);
            elseif rand_num < (index1_percent + index2_percent + index3_percent)/100
             % Generate random number of 5-minute intervals between 3-4 hours
             hours = randi([36,48])/12;
             distance = randi([90,180]);
             fivemindist= distance/(hours*12);
            else
             % Generate random number of 5-minute intervals over 4 hours
             hours = randi([48,60])/12;
            distance = randi([180,200]);
            fivemindist= distance/(hours*12);
            end
    end
 rand_num2 = rand * 0.33;  
random_numbers = rand(1, tripsedan);
sum_of_numbers = sum(random_numbers);
thesplit = random_numbers / sum_of_numbers;
num_splits = length(thesplit);
tripdistances = zeros(1, num_splits);
    for j= 1:tripsedan
        % Determine the departure time for the trip
        departure_time = find(tripmonday_cum >= rand_num2, 1);
        % Get the corresponding time window from timeWindows2
       departure_time_window = randi(timeWindows2{departure_time});
       tripdistance = distance*thesplit(mod(j-1, length(thesplit)) + 1);
       duration= tripdistance/fivemindist; 
       endtriptime= round(departure_time_window + duration);
       for k= departure_time_window:endtriptime
       x=temp{k};
       tripusage(k)= (p1*x^2 + p2*x + p3) *fivemindist;
       end
    end
0 Kommentare
Antworten (1)
  Walter Roberson
      
      
 am 30 Jan. 2023
         x=temp{k};
variable temp with lower case T is not defined. You have a variable Temp with upper case T
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

