33 #include <Rcs_macros.h> 34 #include <Rcs_basicMath.h> 44 const char* format =
"value %02d";
45 const size_t BUFFER_LEN = 10;
46 char buffer[BUFFER_LEN];
48 for (
unsigned int i = 0; i < dim; ++i) {
49 snprintf(buffer, BUFFER_LEN, format, i);
50 out.emplace_back(buffer);
55 min(min), max(max), names(names)
60 RCHECK_MSG(min->m == max->m && min->n == max->n,
61 "Min (%d, %d) and max (%d, %d) dimensions must match", min->m,
62 max->m, min->n, max->n);
69 RCHECK_MSG(min->m*min->n == names.size(),
"Name variables must match element count");
77 this->min = MatNd_create(m, n);
78 this->max = MatNd_create(m, n);
81 MatNd_setElementsTo(this->min, min);
82 MatNd_setElementsTo(this->max, max);
89 RCHECK_MSG(m*n == names.size(),
"Name variables must match element count");
96 min = MatNd_clone(other.
min);
97 max = MatNd_clone(other.
max);
107 min = MatNd_clone(other.
min);
108 max = MatNd_clone(other.
max);
149 if (values->m !=
min->m || values->n !=
min->n) {
152 std::ostringstream os;
153 os <<
"mismatching dimensions: expected (" <<
min->m <<
", " 154 <<
min->n <<
") but got (" << values->m <<
", " << values->n
173 for (
unsigned int i = 0; i < values->m*values->n; ++i) {
174 bool less = values->ele[i] <
min->ele[i];
175 bool more = values->ele[i] >
max->ele[i];
179 std::ostringstream os;
180 os <<
"value out of bounds: val(" << (i/values->n) <<
", " 181 << (i%values->n) <<
") = " << values->ele[i];
183 os <<
" < " <<
min->ele[i];
186 os <<
" > " <<
max->ele[i];
199 return MatNd_create(
min->m,
min->n);
204 RCHECK(out->m ==
min->m && out->n ==
min->n);
206 for (
unsigned int i = 0; i < out->m*out->n; ++i) {
207 out->ele[i] = Math_getRandomNumber(
min->ele[i],
max->ele[i]);
MatNd * createValueMatrix() const
void sample(MatNd *out) const
std::vector< std::string > names
static void initDefaultNames(std::vector< std::string > &out, unsigned int dim)
BoxSpace(MatNd *min, MatNd *max, std::vector< std::string > names={})
BoxSpace & operator=(const BoxSpace &)
bool contains(const MatNd *values, std::string *msg=NULL) const
bool checkDimension(const MatNd *values, std::string *msg=NULL) const