Project Malmo  0.37.0
TimestampedReward.h
1 // --------------------------------------------------------------------------------------------------
2 // Copyright (c) 2016 Microsoft Corporation
3 //
4 // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
5 // associated documentation files (the "Software"), to deal in the Software without restriction,
6 // including without limitation the rights to use, copy, modify, merge, publish, distribute,
7 // sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
8 // furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in all copies or
11 // substantial portions of the Software.
12 //
13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
14 // NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
16 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18 // --------------------------------------------------------------------------------------------------
19 
20 #ifndef _TIMESTAMPEDREWARD_H_
21 #define _TIMESTAMPEDREWARD_H_
22 
23 // Boost:
24 #include <boost/date_time/posix_time/posix_time_types.hpp>
25 
26 // STL:
27 #include <map>
28 
29 #include "RewardXML.h"
30 
31 namespace malmo
32 {
35  {
36  public:
39 
41  TimestampedReward(float reward);
42 
44  TimestampedReward& createFromXML(boost::posix_time::ptime timestamp,std::string xml_string);
45 
47  TimestampedReward& createFromSimpleString(boost::posix_time::ptime timestamp, std::string simple_string);
48 
50  TimestampedReward(boost::posix_time::ptime timestamp, const RewardXML& reward);
51 
55  std::string getAsXML( bool prettyPrint ) const;
56 
59  std::string getAsSimpleString() const;
60 
62  boost::posix_time::ptime timestamp;
63 
65  bool hasValueOnDimension(int dimension) const;
66 
68  double getValueOnDimension(int dimension) const;
69 
71  double getValue() const;
72 
74  void add(const TimestampedReward& other);
75 
77  friend std::ostream& operator<<(std::ostream& os, const TimestampedReward& tsf);
78 
79  private:
80 
81  RewardXML reward;
82  };
83 }
84 
85 #endif
Definition: RewardXML.h:34
A map of int:double storing a value on each dimension, with an attached timestamp saying when it was ...
Definition: TimestampedReward.h:35
std::string getAsXML(bool prettyPrint) const
Formats as an XML string.
double getValueOnDimension(int dimension) const
Returns the reward value stored on the specified dimension.
TimestampedReward(boost::posix_time::ptime timestamp, const RewardXML &reward)
Constructs from an XML node element.
TimestampedReward & createFromSimpleString(boost::posix_time::ptime timestamp, std::string simple_string)
Constructs from a simple string.
double getValue() const
Returns the reward value stored on dimension zero. By default the reward producers store their output...
TimestampedReward()
Constructs an empty reward.
boost::posix_time::ptime timestamp
The timestamp.
Definition: TimestampedReward.h:62
friend std::ostream & operator<<(std::ostream &os, const TimestampedReward &tsf)
Stream a readable version, for casual inspection.
void add(const TimestampedReward &other)
Merge the specified reward structure into this one, adding rewards that are on the same dimension.
bool hasValueOnDimension(int dimension) const
Returns whether a reward value is stored on the specified dimension.
TimestampedReward(float reward)
Constructs from a single reward float (assumes default dimension of 0)
std::string getAsSimpleString() const
Formats as a simple string.
TimestampedReward & createFromXML(boost::posix_time::ptime timestamp, std::string xml_string)
Constructs from an XML string.