From 9d1b3d87afa706a80d311fa0e032738bcc45d384 Mon Sep 17 00:00:00 2001 From: manzand Date: Wed, 29 Jan 2020 14:18:00 -0600 Subject: [PATCH] Rename submission and clean code --- .../DESTION2020/{Reach2.m => Reach.m} | 20 +-- .../examples/Submission/DESTION2020/Reach1.m | 149 ---------------- .../Submission/DESTION2020/Reach3_discrete.m | 168 ------------------ .../Submission/DESTION2020/reachSet.png | Bin 0 -> 39615 bytes .../{AutoCPS2020 => WAAS2020}/README.md | 0 .../Validate_SysID.m | 0 .../components/FNNcontroller.mat | Bin .../components/FNNnorm.mat | Bin .../components/FNNsensor.mat | Bin .../components/UUV_model.mat | Bin .../data/dataSysVal.mat | Bin .../data/data_exp1.mat | Bin .../data/data_exp2.mat | Bin .../data/data_exp3.mat | Bin .../data/data_exp4.mat | Bin .../figures/CaseStudy1.png | Bin .../figures/CaseStudy2.png | Bin .../figures/CaseStudy3.png | Bin .../figures/CaseStudy4.png | Bin .../figures/sys_val.png | Bin .../obstacles/obstacle1.mat | Bin .../obstacles/obstacle2.mat | Bin .../obstacles/obstacle34.mat | Bin .../reach_approx_1.m | 0 .../reach_approx_2.m | 0 .../reach_approx_3.m | 0 .../reach_approx_4.m | 0 27 files changed, 5 insertions(+), 332 deletions(-) rename code/nnv/examples/Submission/DESTION2020/{Reach2.m => Reach.m} (86%) delete mode 100644 code/nnv/examples/Submission/DESTION2020/Reach1.m delete mode 100644 code/nnv/examples/Submission/DESTION2020/Reach3_discrete.m create mode 100644 code/nnv/examples/Submission/DESTION2020/reachSet.png rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/README.md (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/Validate_SysID.m (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/components/FNNcontroller.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/components/FNNnorm.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/components/FNNsensor.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/components/UUV_model.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/data/dataSysVal.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/data/data_exp1.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/data/data_exp2.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/data/data_exp3.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/data/data_exp4.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/figures/CaseStudy1.png (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/figures/CaseStudy2.png (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/figures/CaseStudy3.png (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/figures/CaseStudy4.png (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/figures/sys_val.png (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/obstacles/obstacle1.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/obstacles/obstacle2.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/obstacles/obstacle34.mat (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/reach_approx_1.m (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/reach_approx_2.m (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/reach_approx_3.m (100%) rename code/nnv/examples/Submission/{AutoCPS2020 => WAAS2020}/reach_approx_4.m (100%) diff --git a/code/nnv/examples/Submission/DESTION2020/Reach2.m b/code/nnv/examples/Submission/DESTION2020/Reach.m similarity index 86% rename from code/nnv/examples/Submission/DESTION2020/Reach2.m rename to code/nnv/examples/Submission/DESTION2020/Reach.m index a768dc14f1..4ab4f5b1c1 100644 --- a/code/nnv/examples/Submission/DESTION2020/Reach2.m +++ b/code/nnv/examples/Submission/DESTION2020/Reach.m @@ -6,7 +6,7 @@ %% Load all components % Load controller (NN) -load controller_10_20.mat; +load controller_3_20.mat; weights = network.weights; bias = network.bias; n = length(weights); @@ -36,7 +36,7 @@ % x = [x_lead v_lead x_internal_lead x_ego v_ego x_internal_ego]' lb = [94; 32; 0; 10; 30; 0]; -ub = [96; 32.2; 0; 11; 30.2; 0]; +ub = [95; 32.2; 0; 11; 30.2; 0]; init_set = Star(lb, ub); @@ -86,19 +86,7 @@ %% Plot results -% plot velocity, distance, safe_distance versus time figure; -% subplot 1 -subplot(2, 1, 1); -Star.plotRanges_2D(ego_vel, 1, times, 'blue'); % plot ego car's velocity versus time -hold on; -Star.plotRanges_2D(lead_vel, 1, times, 'green'); % plot ego car's velocity versus time -xlabel('Time (s)'); -ylabel('Velocity (m/s)'); -title('Ego (blue) and lead (green) car velocities'); - -% subplot 2 -subplot(2, 1, 2); Star.plotRanges_2D(dis, 1, times, 'blue'); % plot distance between two cars versus time hold on; Star.plotRanges_2D(safe_dis, 1, times, 'red'); % plot safe distance versus time @@ -106,4 +94,6 @@ xlabel('Time (s)'); ylabel('Distance (m)'); title('Actual distance (blue) vs. safe distance (red)'); -% saveas(gcf, 'reachSet.pdf'); +grid; +set(gca,'FontSize',13) +saveas(gcf, 'reachSet.png'); diff --git a/code/nnv/examples/Submission/DESTION2020/Reach1.m b/code/nnv/examples/Submission/DESTION2020/Reach1.m deleted file mode 100644 index 50ca120be2..0000000000 --- a/code/nnv/examples/Submission/DESTION2020/Reach1.m +++ /dev/null @@ -1,149 +0,0 @@ -%% Script to generate the graphs for DESTION 2020 -% We are going to evaluate the adaptive cruise control system with -% different controllers and different scenarios. We will also evaluate the -% discrete ACC and the nonlinear dynamics. -clc;clear;close all; - -%% Load all components and create NNCS -load controller_5_20.mat; - -weights = network.weights; -bias = network.bias; -n = length(weights); -Layers = []; -for i=1:n - 1 - L = Layer(weights{1, i}, bias{i, 1}, 'ReLU'); - Layers = [Layers L]; -end - -L = Layer(weights{1, n}, bias{n, 1}, 'Linear'); - -Layers = [Layers L]; - -Controller = FFNN(Layers); % feedforward neural network controller -Plant = NonLinearODE(6, 1, @car_dynamics); -Plant.set_timeStep(0.01); % time step for reachability analysis of the plant -Plant.set_tFinal(0.1); % Ts = 0.1, sampling time for control signal from neural network controller -output_mat = [0 0 0 0 1 0;1 0 0 -1 0 0; 0 1 0 0 -1 0]; % feedback: relative distance, relative velocity and ego-car velocity -Plant.set_output_mat(output_mat); % Define the outputs that is feedback to the controller - -feedbackMap = [0]; % feedback map, y[k] - -ncs = NNCS(Controller, Plant, feedbackMap); % the neural network control system - - -%% Initialize components and set conditions - -% initial position of lead car x_lead -x_lead = [90 92]; -% initial condition of v_lead -% v_lead = cell(6, 1); -% v_lead{1, 1} = [29 30]; -% v_lead{2, 1} = [28 29]; -% v_lead{3, 1} = [27 28]; -% v_lead{4, 1} = [26 27]; -% v_lead{5, 1} = [25 26]; -% v_lead{6, 1} = [24 25]; -v_lead = [25.5 26.5]; - -% initial condition of x_internal_lead -internal_acc_lead = [0 0]; -% initial condition of x_ego -x_ego = [10 11]; -% initial condition of v_ego -v_ego = [30 30.2]; -% initial condition of x_internal_ego -internal_acc_ego = [0 0]; - -% n = length(v_lead); - -% init_set(n) = Star(); - - -lb = [x_lead(1); v_lead(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1)]; -ub = [x_lead(2); v_lead(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2)]; -init_set(i) = Star(lb, ub); - - -% reference input for neural network controller -% t_gap = 1.4; v_set = 30; - -lb = [30; 1.4]; -ub = [30; 1.4]; - -input_ref = Star(lb, ub); % input reference set - -%% Start reachability analysis - -N = 50; % number of control steps -times = 0:0.01:N*0.1; - -n_cores = 4; % number of cores - -% safety specification: relative distance > safe distance -% dis = x_lead - x_ego -% safe distance between two cars, see here -% https://www.mathworks.com/help/mpc/examples/design-an-adaptive-cruise-control-system-using-model-predictive-control.html -% dis_safe = D_default + t_gap * v_ego; - -t_gap = 1.4; -D_default = 10; - -% safety specification: x_lead - x_ego - t_gap * v_ego - D_default > 0 -% unsafe region: x_lead - x_ego - t_gap * v_ego <= D_default - -unsafe_mat = [1 0 0 -1 -t_gap 0]; -unsafe_vec = [D_default]; - -safe = cell(1, n); % safety status -VT = zeros(1,n); % verification time -counterExamples = cell(1,n); % counter examples -ReachSystem = []; -t = tic; -ReachSystem = ncs.reach('approx-star', init_set(i), input_ref, n_cores, N); -[safe1, ~] = ncs.check_safety(unsafe_mat, unsafe_vec, n_cores); -if safe1 == 1 - safe{i} = 'SAFE'; -else - Bi = init_set(i).getBox; - Br = input_ref.getBox; - [rs, ~, counterExamples, ~, ~, ~] = ncs.falsify(0.1, N, Bi, Br, unsafe_mat, unsafe_vec, 1000); - - if rs == 1 - safe{i} = 'UNSAFE'; - else - safe{i} = 'UNKNOWN'; - end -end -VT(i) = toc(t); - -alp = 1; -t_gap = 1.4; -D_default = 10; -dis = []; -safe_dis = []; -ego_vel = []; -lead_vel = []; - -for i=1:length(ReachSystem) - dis = [dis ReachSystem(i).affineMap([1 0 0 -1 0 0], [])]; - safe_dis = [safe_dis ReachSystem(i).affineMap([0 0 0 0 alp*t_gap 0], alp*D_default)]; - ego_vel = [ego_vel ReachSystem(i).affineMap([0 0 0 0 1 0], [])]; - lead_vel = [lead_vel ReachSystem(i).affineMap([0 1 0 0 0 0], [])]; -end - - -%% Plot results -figure; -Star.plotBoxes_2D_noFill(ReachSystem, 1, 4,'b'); -figure; -Star.plotBoxes_2D_noFill(ReachSystem, 2, 5,'b'); -figure; -Star.plotBoxes_2D_noFill(ego_vel, 1, times,'b'); -figure; -Star.plotBoxes_2D_noFill(dis, 2, times,'b'); -figure; -Star.plotBoxes_2D_noFill(safe_dis, 1, times,'b'); -figure; -Star.plotBoxes_2D_noFill(lead_vel, 2, times,'b'); - diff --git a/code/nnv/examples/Submission/DESTION2020/Reach3_discrete.m b/code/nnv/examples/Submission/DESTION2020/Reach3_discrete.m deleted file mode 100644 index 43854b44c5..0000000000 --- a/code/nnv/examples/Submission/DESTION2020/Reach3_discrete.m +++ /dev/null @@ -1,168 +0,0 @@ -%% System model -% x1 = lead_car position -% x2 = lead_car velocity -% x3 = lead_car internal state - -% x4 = ego_car position -% x5 = ego_car velocity -% x6 = ego_car internal state - -% lead_car dynamics -%dx(1,1)=x(2); -%dx(2,1) = x(3); -%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; - -% ego car dynamics -%dx(4,1)= x(5); -%dx(5,1) = x(6); -%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; - - -% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead -% -> dx7 = -2dx3 - - -A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; -B = [0; 0; 0; 0; 0; 2; 0]; -C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity -D = [0; 0; 0]; - -plant = LinearODE(A, B, C, D); % continuous plant model - -plantd = plant.c2d(0.1); % discrete plant model - -% the neural network provides a_ego control input to the plant -% a_lead = -5 - - -%% Controller -load controller_5_20.mat; - -weights = network.weights; -bias = network.bias; -n = length(weights); -n = length(weights); -Layers = []; -for i=1:n - 1 - L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); - Layers = [Layers L]; -end -L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); -Layers = [Layers L]; -Controller = FFNNS(Layers); % feedforward neural network controller - - -%% NNCS - -ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system - - -%% Initial Set of states and reference inputs - -% reference input for neural network controller -% t_gap = 1.4; v_set = 30; - -ref_input = [30; 1.4]; - -% initial condition of the plant - -% initial position of lead car x_lead -x_lead = [90 92]; -% initial condition of v_lead -v_lead = cell(10, 1); -v_lead{1, 1} = [29 30]; -v_lead{2, 1} = [28 29]; -v_lead{3, 1} = [27 28]; -v_lead{4, 1} = [26 27]; -v_lead{5, 1} = [25 26]; -v_lead{6, 1} = [24 25]; -v_lead{7, 1} = [23 24]; -v_lead{8, 1} = [22 23]; -v_lead{9, 1} = [21 22]; -v_lead{10, 1} = [20 21]; - -% initial condition of x_internal_lead -internal_acc_lead = [0 0]; -% initial condition of x_ego -x_ego = [30 31]; -% initial condition of v_ego -v_ego = [30 30.5]; -% initial condition of x_internal_ego -internal_acc_ego = [0 0]; - -a_lead = -5; -% initial condition for new introduced variable -x7_0 = [2*a_lead 2*a_lead]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 - -N = length(v_lead); -for i=1:N - lb = [x_lead(1); v_lead{i}(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; - ub = [x_lead(2); v_lead{i}(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; - init_set(i) = Star(lb, ub); -end - - - -%% Reachability Analysis && Verification -numSteps = 50; -numCores = 4; -% safety property: actual distance > alpha * safe distance <=> d = x1 - x4 > alpha * d_safe = alpha * (1.4 * v_ego + 10) - -% usafe region: x1 - x4 <= alpha * (1.4 * v_ego + 10) -alpha = 1; -unsafe_mat = [1 0 0 -1 -alpha*1.4 0 0]; -unsafe_vec = alpha*10; - -% N = 1; % just for testing -safe_exact = cell(1,N); -VT_exact = zeros(1, N); -counterExamples_exact = cell(1, N); -dis_ACC_exact = cell(1,N); - -for i=1:N - [safe_exact{i}, counterExamples_exact{i}, VT_exact(i)] = ncs.verify(init_set(i), ref_input, numSteps, 'exact-star', numCores, unsafe_mat, unsafe_vec); - dis_ACC_exact{i} = ncs; %store for plotting reachable sets -end - - -safe_approx = cell(1, N); -VT_approx = zeros(1, N); -counterExamples_approx = cell(1, N); -dis_ACC_approx = cell(1, N); - -for i=1:N - [safe_approx{i}, counterExamples_approx{i}, VT_approx(i)] = ncs.verify(init_set(i), ref_input, numSteps, 'approx-star', numCores, unsafe_mat, unsafe_vec); - dis_ACC_approx{i} = ncs; % store for plotting reachable sets -end - - -%% Safe verification results - -save discrete_ACC_verification_results.mat safe_exact VT_exact counterExamples_exact safe_approx VT_approx counterExamples_approx dis_ACC_exact dis_ACC_approx; - -%% Print verification results to screen -fprintf('\n======================================================'); -fprintf('\nVERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL'); -fprintf('\n======================================================'); -fprintf('\nv_lead(0) exact-star approx-star '); -fprintf('\n safety | VT safety | VT '); -fprintf('\n[%d %d] %s | %3.3f %s | %3.3f ', v_lead{1}(1), v_lead{1}(2), safe_exact{1}, VT_exact(1), safe_approx{1}, VT_approx(1)); -for i=2:N -fprintf('\n[%d %d] %s | %3.3f %s | %3.3f ', v_lead{i}(1), v_lead{i}(2), safe_exact{i}, VT_exact(i), safe_approx{i}, VT_approx(i)); -end - -%% Print verification results to a file - -fid = fopen('discrete_ACC_verification_results.txt', 'wt'); -fprintf(fid,'\n======================================================'); -fprintf(fid,'\nVERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL'); -fprintf(fid,'\n======================================================'); -fprintf(fid,'\nx_lead(0) exact-star approx-star '); -fprintf(fid,'\n safety | VT safety | VT '); -fprintf(fid,'\n[%d %d] %s | %3.3f %s | %3.3f ', v_lead{1}(1), v_lead{1}(2), safe_exact{1}, VT_exact(1), safe_approx{1}, VT_approx(1)); -for i=2:N -fprintf(fid,'\n[%d %d] %s | %3.3f %s | %3.3f ', v_lead{i}(1), v_lead{i}(2), safe_exact{i}, VT_exact(i), safe_approx{i}, VT_approx(i)); -end -fclose(fid); - -%% END diff --git a/code/nnv/examples/Submission/DESTION2020/reachSet.png b/code/nnv/examples/Submission/DESTION2020/reachSet.png new file mode 100644 index 0000000000000000000000000000000000000000..4edf3808be78b2b1e1fa849147876a96595c45a2 GIT binary patch literal 39615 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