Index exceeds the number of array elements (1).

1 Ansicht (letzte 30 Tage)
Vincent Lau
Vincent Lau am 27 Okt. 2020
Bearbeitet: Cris LaPierre am 27 Okt. 2020
Error in NLP_forlooooppiiee (line 80)
tau(k) = floor ( [(C_ud - q_ud(k)) * l_veh / (N_ud * v_ud*c)]);
E1 = 10;
E2 = 4;
E3 = 2;
c = (60/3600); %hr
N_ud = 3;
v_ud = 50; % km/hr
l_veh = (7/1000); %km
l_ud = 1; % km
beta_udo1 = 0.33;
beta_udo2 = 0.34;
beta_udo3 = 0.33;
mu_udo1 = 1600; %veh/hr
mu_udo2 = 1800;
mu_udo3 = 1500;
C_ud = N_ud * l_ud / l_veh;
n_ud0 = 0;
%Parameters link o1-d
N_o1d = 3;
v_o1d = 60;
l_veh = 7;
l_o1d = 1000;
beta_o1du = 0.33;
beta_o1do2 = 0.33;
beta_o1do3 = 0.34;
mu_o1du = 1600;
mu_o1do3 = 1800;
mu_o1do2 = 1500;
for k = 1:60
%initial values
q_udo1(1) = 0;
q_udo2(1) = 0;
q_udo3(1) = 0;
q_ud(1) = 0;
n_ud(1) = 0;
%g_d(k)
g_d(k) = (30/3600);
%a_enter_ud
if k <= 20
a_enter_ud(k) = 1800 + 10*E1;
end
if k > 20 && k<= 40
a_enter_ud(k) = 2100 + 10*E2;
end
if k > 40
a_enter_ud(k) = 2300 + 10*E3;
end
%C_do1
if k <= 20
C_do1(k)= 40 + E1;
end
if k > 20 && k<= 35
C_do1(k) = 40 + E1 - 2 * (k -20);
end
if k>35 && k<=45
C_do1(k) = 10+E1;
end
if k>45
C_do1(k) = 10 + E1 + 2*(k-45);
end
%C_do2
C_do2(k) = C_do1(k) - E2;
%C_do3
if k <= 30
C_do3(k) = 30 - E3;
end
if k>30
C_do3(k) = 30 + E3;
end
%tau(k)
tau(k) = floor ( (C_ud - q_ud(k)) * l_veh / (N_ud * v_ud*c) );
%gamma(k)
gamma(k) = mod(( (C_ud - q_ud(k)) * l_veh / (N_ud * v_ud)),c);
%k-tau -- zorgt ervoor dat er geen negatieve index komt
z(k) = k - tau(k);
if z(k) <= 0
z(k) = 1;
end
%k-tau-1 zorgen ervoor dat er geen negatieve index komt
e(k) = k - tau(k) - 1;
if e(k) <=0
e(k) = 1;
end
%a_arriv_ud
a_arriv_ud(k) = ((c-gamma(k))/c * a_enter_ud(z(k))) + (gamma(k)/c * a_enter_ud(e(k)));
%a_arriv_udo
a_arriv_udo1(k) = beta_udo1 * a_arriv_ud(k);
a_arriv_udo2(k) = beta_udo2 * a_arriv_ud(k);
a_arriv_udo3(k) = beta_udo3 * a_arriv_ud(k);
%a_leave_udo1
a_leave_udo1(k) = min([mu_udo1 * g_d(k)/c, (q_udo1(k)/c) + a_arriv_udo1(k), C_do1(k)/c]);
a_leave_udo2(k) = min([mu_udo2 * g_d(k)/c, (q_udo2(k)/c) + a_arriv_udo2(k), C_do2(k)/c]);
a_leave_udo3(k) = min([mu_udo3 * g_d(k)/c, (q_udo3(k)/c) + a_arriv_udo3(k), C_do3(k)/c]);
%q_udo(k+1)
q_udo1(k+1) = q_udo1(k) + c*(a_arriv_udo1(k) - a_leave_udo1(k));
q_udo2(k+1) = q_udo2(k) + c*(a_arriv_udo2(k) - a_leave_udo2(k));
q_udo3(k+1) = q_udo3(k) + c*(a_arriv_udo3(k) - a_leave_udo3(k));
%q_ud(k)
q_ud(k) = q_udo1(k) + q_udo2(k) + q_udo3(k);
%a_leave_ud
a_leave_ud(k) = a_leave_udo1(k) + a_leave_udo2(k) + a_leave_udo3(k);
%n_ud(k+1)
n_ud(k+1) = n_ud(k) + c *(a_enter_ud(k) - a_leave_ud(k));
end

Antworten (1)

Cris LaPierre
Cris LaPierre am 27 Okt. 2020
Bearbeitet: Cris LaPierre am 27 Okt. 2020
I suggest looking at one of these posts.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by