-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathClassifyTerminalNeighborhoods.m
48 lines (40 loc) · 1.62 KB
/
ClassifyTerminalNeighborhoods.m
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
% ClassifyTerminalNeighborhoods estimates the neighborhoods of the
% start and goal states using the SVM classifier previously trained
%
% Ross Allen, ASL, Stanford University
% May 19, 2014
%
% Notes:
% - nSamples = number of state samples not including start state or
% goal region samples
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function mpinfo = ClassifyTerminalNeighborhoods(mpinfo)
% Unpack variables to be accessed and modified
termStates = mpinfo.termStates;
% Unpack variables to be accessed (not modified)
nSamples = mpinfo.sampling.nSamples;
nGoalSamples = mpinfo.sampling.nGoalSamples;
Xstart = termStates.Xstart;
Xgoal = termStates.Xgoal;
stateMat = mpinfo.stateMat;
featureSet = mpinfo.learning.neighbor.featureSet;
svm_output = mpinfo.learning.neighbor.svm_output;
% Classify start states neighborhood
start_neighbors_feature_matrix = featureSet( ...
repmat(Xstart,nSamples+nGoalSamples+1,1), stateMat(1:end,:) );
reachableFromXstart = is_reachable( svm_output,...
start_neighbors_feature_matrix);
% Classify goal state neighborhoods
XgoalReachableFrom = zeros(nSamples+nGoalSamples+1,nGoalSamples);
for i = 1:nGoalSamples
goal_neighbors_feature_matrix = featureSet( ...
stateMat(1:end,:), repmat(Xgoal(i,:),nSamples+nGoalSamples+1,1) );
XgoalReachableFrom(:,i) = is_reachable(svm_output,...
goal_neighbors_feature_matrix);
end
XgoalReachableFrom = logical(XgoalReachableFrom);
% Consolidate Results
termStates.reachableFromXstart = reachableFromXstart;
termStates.XgoalReachableFrom = XgoalReachableFrom ;
mpinfo.termStates = termStates;
end