Conscience Core
ConscienceEncoder.h
Go to the documentation of this file.
1 #ifndef ConscienceEncoder_h
2 #define ConscienceEncoder_h
3 
4 #include <string>
5 
10 #include "CoreObjects/CscState.h"
12 
13 using std::vector, std::string, std::stoull;
14 
15 namespace conscience_core::bridging {
16 
20 enum CscStateEncodingOption : uint32_t {
21  NONE = 0,
22  WITH_INPUTS = 1 << 0,
23 
27  WITH_EXTRAS = 1 << 1
28 };
29 typedef uint32_t CscStateEncodingOptions;
30 
32  double delay = 0;
33  double duration = 0;
34  double objectiveValue = 0;
35 
36  operator string() const {
37  return "delay=" + to_string(delay) + ",duration=" + to_string(duration) + ",objectiveValue=" + to_string(objectiveValue);
38  }
39 };
40 
43  optional<CscStateExtras> extras = {};
44 };
45 
47 public:
49 
50  static constexpr double ENCODER_VERSION = 4.2;
51 
66  virtual DoubleSizedArray encodeSequence(CscSequence *sequence) const;
67 
72  virtual string encodeSequenceToString(CscSequence *sequence) const;
73 
77  virtual CscStateWithExtras decodeState(const double *const values) const;
78 
88  CscSequence *decodeSequenceStates(const double *const values) const;
89 
102  CscSequence *decodeSequence(const double *const values) const;
103 
113  CscSequence *decodeSequenceFromString(const string &sequenceString) const;
114 
115  virtual CscStateWithExtras decodeStateFromString(const string &valuesString, const string &delimiter = ",") const;
116 
122  virtual DoubleSizedArray encodeState(const CscState &state,
124  optional<CscStateExtras> stateExtras = {}) const;
125 
126  string encodeStateToString(const CscState &state,
128  optional<CscStateExtras> stateExtras = {}) const;
129 
130  unsigned getEncodedStateLength(const CscState &state, CscStateEncodingOptions options) const;
131 
132  CscMovement *decodeMovement(const double *const values, int &arrayIndex) const;
133 
134 private:
135  inline static ConscienceEncoder *instance = nullptr;
136  unique_ptr<CscLogger> logger;
137  ConscienceEncoder();
138 
139  virtual DoubleSizedArray encodeSequencePositions(CscSequencePositions *sequence) const;
140  virtual DoubleSizedArray encodeSequencePositionsWithOutputs(CscSequencePositions *sequence) const;
141  unsigned getEncodedSequenceLength(CscSequence *sequence, CscStateEncodingOptions stateEncodingOptions) const;
142  unsigned getEncodedSequenceOfPositionsLength(CscSequencePositions *sequence, CscStateEncodingOptions stateEncodingOptions) const;
143  CscSequenceMovements *decodeSequenceMovements(const double *const values) const;
144 
145  DoubleSizedArray encodeMovement(const CscMovement *movement) const;
146  DoubleSizedArray encodeSequenceMovements(const CscSequenceMovements *sequence) const;
147 
148  int getEncodedMovementLength(const CscMovement *sequence) const;
149  int getEncodedSequenceMovementsLength(const CscSequenceMovements *movement) const;
150 
151  string encodeStateValuesToString(DoubleSizedArray values) const;
152 };
153 }
154 #endif
conscience_core::bridging
Definition: CscCoreObjectsJsonEncoder.cpp:13
conscience_core::bridging::ConscienceEncoder::decodeState
virtual CscStateWithExtras decodeState(const double *const values) const
Definition: ConscienceEncoder.cpp:356
CscSequenceMovements.h
nlohmann::to_string
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
Definition: json.hpp:26470
conscience_core::bridging::CscStateWithExtras::state
CscState * state
Definition: ConscienceEncoder.h:42
conscience_core::bridging::ConscienceEncoder::getInstance
static ConscienceEncoder * getInstance()
Definition: ConscienceEncoder.cpp:457
CscSequencePositions
Definition: CscSequencePositions.h:23
conscience_core::bridging::CscStateExtras::delay
double delay
Definition: ConscienceEncoder.h:32
conscience_core::bridging::CscStateWithExtras::extras
optional< CscStateExtras > extras
Definition: ConscienceEncoder.h:43
conscience_core::bridging::ConscienceEncoder::decodeSequenceFromString
CscSequence * decodeSequenceFromString(const string &sequenceString) const
Decodes a sequence from a string representation.
Definition: ConscienceEncoder.cpp:298
CscSequence.h
conscience_core::bridging::ConscienceEncoder::encodeStateToString
string encodeStateToString(const CscState &state, CscStateEncodingOptions options=CscStateEncodingOption::NONE, optional< CscStateExtras > stateExtras={}) const
Definition: ConscienceEncoder.cpp:215
conscience_core::bridging::WITH_INPUTS
@ WITH_INPUTS
Definition: ConscienceEncoder.h:22
conscience_core::bridging::CscStateExtras::duration
double duration
Definition: ConscienceEncoder.h:33
conscience_core::bridging::CscStateEncodingOption
CscStateEncodingOption
Definition: ConscienceEncoder.h:20
conscience_core::bridging::ConscienceEncoder::decodeSequence
CscSequence * decodeSequence(const double *const values) const
Decodes a sequence from an array of double values.
Definition: ConscienceEncoder.cpp:310
conscience_core::bridging::ConscienceEncoder::encodeState
virtual DoubleSizedArray encodeState(const CscState &state, CscStateEncodingOptions options=CscStateEncodingOption::NONE, optional< CscStateExtras > stateExtras={}) const
Definition: ConscienceEncoder.cpp:227
conscience_core::bridging::WITH_EXTRAS
@ WITH_EXTRAS
Definition: ConscienceEncoder.h:27
CscState
Definition: CscState.h:24
conscience_core::bridging::CscStateExtras::objectiveValue
double objectiveValue
Definition: ConscienceEncoder.h:34
conscience_utils::DoubleSizedArray
Definition: conscience_util.h:607
CscMovement
Definition: CscSequenceMovements.h:116
conscience_core::bridging::ConscienceEncoder
Definition: ConscienceEncoder.h:46
conscience_core::bridging::ConscienceEncoder::encodeSequenceToString
virtual string encodeSequenceToString(CscSequence *sequence) const
Definition: ConscienceEncoder.cpp:183
CscMemberInputStatus.h
CscSequencePositions.h
CscState.h
conscience_core::bridging::ConscienceEncoder::getEncodedStateLength
unsigned getEncodedStateLength(const CscState &state, CscStateEncodingOptions options) const
Definition: ConscienceEncoder.cpp:192
conscience_core::bridging::ConscienceEncoder::encodeSequence
virtual DoubleSizedArray encodeSequence(CscSequence *sequence) const
Definition: ConscienceEncoder.cpp:135
conscience_core::bridging::ConscienceEncoder::decodeSequenceStates
CscSequence * decodeSequenceStates(const double *const values) const
Decodes the states for a sequence from an array of double values.
Definition: ConscienceEncoder.cpp:329
conscience_core::bridging::CscStateEncodingOptions
uint32_t CscStateEncodingOptions
Definition: ConscienceEncoder.h:29
CscEntityModel.h
conscience_core::bridging::CscStateExtras
Definition: ConscienceEncoder.h:31
conscience_core::bridging::ConscienceEncoder::ENCODER_VERSION
static constexpr double ENCODER_VERSION
Definition: ConscienceEncoder.h:50
conscience_core::bridging::ConscienceEncoder::decodeStateFromString
virtual CscStateWithExtras decodeStateFromString(const string &valuesString, const string &delimiter=",") const
Definition: ConscienceEncoder.cpp:20
conscience_core::bridging::ConscienceEncoder::decodeMovement
CscMovement * decodeMovement(const double *const values, int &arrayIndex) const
Definition: ConscienceEncoder.cpp:675
CscSequenceMovements
Definition: CscSequenceMovements.h:236
conscience_core::bridging::NONE
@ NONE
Definition: ConscienceEncoder.h:21
CscSequence
Definition: CscSequence.h:51
conscience_core::bridging::CscStateWithExtras
Definition: ConscienceEncoder.h:41