1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| clc;clear all;close all;
h_init = 0; v_init = 0;
h_final = 10; v_final = 0;
h_min = 0; h_max = 10; N_h = 5; v_min = 0; v_max = 3; N_v = 3;
Hd = h_min:(h_max - h_min)/N_h:h_max; Vd = v_min:(v_max-v_min)/N_v:v_max;
u_min = -3;u_max = 2;
J_costtogo = zeros(N_h+1,N_v+1);
Input_acc = zeros(N_h+1,N_v+1);
v_avg = 0.5 * (v_final + Vd); T_delta = (h_max - h_min)./(N_h*v_avg); acc = (0-Vd)./T_delta; J_temp = T_delta; [acc_x,acc_y] = find(acc < u_min | acc > u_max); Ind_lin_acc = sub2ind(size(acc),acc_x,acc_y); J_temp(Ind_lin_acc) = inf; J_costtogo(2,:) = J_temp; Input_acc(2,:) = acc;
for k = 3:1:N_h [Vd_x,Vd_y] = meshgrid(Vd,Vd); v_avg = 0.5 * (Vd_x + Vd_y); T_delta = (h_max - h_min)./(N_h * v_avg); acc = (Vd_y - Vd_x) ./ T_delta; J_temp = T_delta; [acc_x,acc_y] = find(acc < u_min | acc > u_max); Ind_lin_acc = sub2ind(size(acc),acc_x,acc_y); J_temp(Ind_lin_acc) = inf;
J_temp = J_temp + meshgrid(J_costtogo(k-1,:))'; [J_costtogo(k,:),l] = min(J_temp); Ind_lin_acc = sub2ind(size(J_temp),l,1:length(l)); Input_acc(k,:) = acc(Ind_lin_acc); end
v_avg = 0.5 * (Vd+v_init); T_delta = (h_max - h_min)./(N_h*v_avg); acc = (Vd - v_init)./T_delta; J_temp = T_delta; [acc_x,acc_y] = find(acc < u_min | acc > u_max); Ind_lin_acc = sub2ind(size(acc),acc_x,acc_y); J_temp(Ind_lin_acc) = inf;
J_temp = J_temp + J_costtogo(N_h,:); [J_costtogo(N_h+1,1),l] = min(J_temp) Ind_lin_acc = sub2ind(size(J_temp),l); Input_acc(N_h+1,l) = acc(Ind_lin_acc)
|