-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstochy14D.cpp
More file actions
102 lines (77 loc) · 2.7 KB
/
stochy14D.cpp
File metadata and controls
102 lines (77 loc) · 2.7 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//Run: make
// ./stochy14D
// Created by Ben Wooding 8 Jan 2024
#include <iostream>
#include <vector>
#include <functional>
#include "../../src/IMDP.h"
#include <armadillo>
#include <chrono>
using namespace arma;
using namespace std;
/*
################################# PARAMETERS ###############################################
*/
// Set the dimensions
const int dim_x = 14;
const int dim_u = 0;
const int dim_w = 0;
// Define lower bounds, upper bounds, and step sizes
// States
const vec ss_lb = {-0.5, -0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5};
const vec ss_ub = {0.5, 0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5};
const vec ss_eta = {1,1,1,1,1,1,1,1,1,1,1,1,1,1};
//standard deviation of each dimension
const vec sigma = {sqrt(0.2), sqrt(0.2), sqrt(0.2),sqrt(0.2),sqrt(0.2),sqrt(0.2),sqrt(0.2),sqrt(0.2),sqrt(0.2),sqrt(0.2),sqrt(0.2),sqrt(0.2),sqrt(0.2),sqrt(0.2)};
//dynamics - 1 parameter
auto dynamics = [](const vec& x) -> vec {
vec xx(dim_x);
xx[0] = 0.8*x[0];
xx[1] = 0.8*x[1];
xx[2] = 0.8*x[2];
xx[3] = 0.8*x[3];
xx[4] = 0.8*x[4];
xx[5] = 0.8*x[5];
xx[6] = 0.8*x[6];
xx[7] = 0.8*x[7];
xx[8] = 0.8*x[8];
xx[9] = 0.8*x[9];
xx[10] = 0.8*x[10];
xx[11] = 0.8*x[11];
xx[12] = 0.8*x[12];
xx[13] = 0.8*x[13];
return xx;
};
/*
################################# MAIN FUNCTION ##############################################
*/
int main() {
/* ###### create IMDP object ###### */
IMDP mdp(dim_x,dim_u,dim_w);
/* ###### create finite sets for the different spaces ###### */
mdp.setStateSpace(ss_lb, ss_ub, ss_eta);
/*###### save the files ######*/
mdp.saveStateSpace();
/*###### set dynamics and noise ######*/
mdp.setDynamics(dynamics);
mdp.setNoise(NoiseType::NORMAL);
mdp.setStdDev(sigma);
/* ###### calculate abstraction for avoid vectors ######*/
mdp.minAvoidTransitionVector();
mdp.maxAvoidTransitionVector();
/* ###### save avoid vectors ######*/
mdp.saveMinAvoidTransitionVector();
mdp.saveMaxAvoidTransitionVector();
/* ###### calculate abstraction for transition matrices ######*/
mdp.transitionMatrixBounds();
/* ###### save transition matrices ######*/
mdp.saveMinTransitionMatrix();
mdp.saveMaxTransitionMatrix();
/* ###### synthesize infinite horizon controller (true = pessimistic, false = optimistic) ######*/
mdp.infiniteHorizonSafeController(false);
/* ###### synthesize finite horizon controller (true = pessimistic, false = optimistic) ######*/
//mdp.finiteHorizonSafeController(true,10);
/* ###### save controller ######*/
mdp.saveController();
return 0;
}