Reinforcement Learning Toolbox 2.0
last updated:
General
Documentation
Manual
Tutorial
Class Reference
Master Thesis
Examples
Related Papers
Downloads
Links
News
mailto:webmaster
Main Page     Class Hierarchy   Compound List   File List   Compound Members   File Members

cstate.h

Go to the documentation of this file.
00001 // Copyright (C) 2003
00002 // Gerhard Neumann (gneumann@gmx.net)
00003 // Stephan Neumann (sneumann@gmx.net) 
00004 //                
00005 // This file is part of RL Toolbox.
00006 // http://www.igi.tugraz.at/ril_toolbox
00007 //
00008 // All rights reserved.
00009 // 
00010 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions
00012 // are met:
00013 // 1. Redistributions of source code must retain the above copyright
00014 //    notice, this list of conditions and the following disclaimer.
00015 // 2. Redistributions in binary form must reproduce the above copyright
00016 //    notice, this list of conditions and the following disclaimer in the
00017 //    documentation and/or other materials provided with the distribution.
00018 // 3. The name of the author may not be used to endorse or promote products
00019 //    derived from this software without specific prior written permission.
00020 // 
00021 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
00022 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00023 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
00024 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
00025 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
00026 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00027 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00028 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00029 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
00030 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00031 
00032 #ifndef CMODELSTATE_H
00033 #define CMODELSTATE_H
00034 
00035 
00036 #include "cbaseobjects.h"
00037 
00038 #include <vector>
00039 #include <stdio.h>
00040 #include "newmat/newmat.h"
00041 
00042 
00043 class CEnvironmentModel;
00044 class CState;
00045 
00047 
00057 class CStateCollection
00058 {
00059 protected:
00060         bool b_resetState;
00061         
00062 public:
00063         CStateCollection() {b_resetState = false;};
00064         virtual ~CStateCollection() {};
00066         virtual CState *getState(CStateProperties *properties) = 0;
00068         virtual CState *getState() = 0;
00070         virtual bool isMember(CStateProperties *stateModifier) = 0;
00071 
00072         virtual bool isResetState() {return b_resetState;};
00073         virtual void setResetState(bool reset) {b_resetState = reset;};
00074 };
00075 
00076 
00078 
00091 class CState : public CStateObject,public CStateCollection, public ColumnVector
00092 {
00093 protected:
00094 
00096         int *discreteState;
00097 
00099         unsigned int numActiveContinuousStates;
00101         unsigned int numActiveDiscreteStates;
00102 
00103 public:
00105         CState(CStateProperties *properties);
00107         CState(CEnvironmentModel *model);
00109         CState(CState *copy);
00111 
00116         CState(CStateProperties *properties, FILE *stream, bool binary = true);
00118         void setState(CState *copy);
00120 
00122         void resetState();
00123 
00124         virtual ~CState();
00125 
00127 
00128         virtual CState *getState(CStateProperties *properties);
00130 
00131         virtual CState *getState();
00132 
00136         virtual bool isMember(CStateProperties *stateModifier);
00137 
00139         unsigned int getNumActiveDiscreteStates();
00141         unsigned int getNumActiveContinuousStates();
00142 
00144         void setNumActiveDiscreteStates(int numActiveStates);
00146         void setNumActiveContinuousStates(int numActiveStates);
00147 
00149         void saveBinary(FILE *stream);
00151         void loadBinary(FILE *stream);
00152 
00154         void saveASCII(FILE *stream);
00156         void loadASCII(FILE *stream);
00157 
00159         virtual CState* clone();
00160 
00162         virtual double getContinuousState(unsigned int dim);
00164 
00166         virtual double getNormalizedContinuousState(unsigned int dim);
00168         virtual int getDiscreteState(unsigned int dim);
00169         virtual int getDiscreteStateNumber();
00170 
00172         virtual void setContinuousState(unsigned int dim, double val);
00174         virtual void setDiscreteState(unsigned int dim, int val);
00175 
00177         virtual bool equals(CState *state);
00178 
00179         virtual double getDistance(ColumnVector *vector);
00180 
00181         double getSingleStateDifference(int dim, double value);
00182 
00183 };
00184 
00186 
00196 class CStateList : virtual public CStateObject
00197 {
00198 protected:
00200         std::vector<std::vector<double> *> *continuousStates;
00202         std::vector<std::vector<int> *> *discreteStates;
00203         
00204         std::vector<bool> *resetStates;
00205 
00207         int numStates;
00208 public:
00210 
00212         CStateList(CStateProperties *properties);
00213         virtual ~CStateList();
00214 
00216 
00220         void addState(CState *state);
00222 
00227         void getState(unsigned int num, CState *state);
00228 
00229         void removeLastState();
00230         void removeFirstState();
00231 
00233 
00235         virtual void loadBIN(FILE *stream);
00237         virtual void saveBIN(FILE *stream);
00238 
00240 
00242         virtual void loadASCII(FILE *stream);
00244         virtual void saveASCII(FILE *stream);
00245         
00247         unsigned int getNumStates();
00248         void clear();
00249 };
00250 
00251 
00252 
00253 #endif
00254 
00255