You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
3.4 KiB
82 lines
3.4 KiB
#ifndef STORM_GENERATOR_COMPRESSEDSTATE_H_
|
|
#define STORM_GENERATOR_COMPRESSEDSTATE_H_
|
|
|
|
#include "storm/storage/BitVector.h"
|
|
#include <unordered_map>
|
|
|
|
namespace storm {
|
|
namespace expressions {
|
|
template<typename ValueType> class ExpressionEvaluator;
|
|
|
|
class ExpressionManager;
|
|
class SimpleValuation;
|
|
}
|
|
|
|
namespace generator {
|
|
typedef storm::storage::BitVector CompressedState;
|
|
|
|
struct VariableInformation;
|
|
|
|
/*!
|
|
* Unpacks the compressed state into the evaluator.
|
|
*
|
|
* @param state The state to unpack.
|
|
* @param variableInformation The information about how the variables are packed within the state.
|
|
* @param evaluator The evaluator into which to load the state.
|
|
*/
|
|
template<typename ValueType>
|
|
void unpackStateIntoEvaluator(CompressedState const& state, VariableInformation const& variableInformation, storm::expressions::ExpressionEvaluator<ValueType>& evaluator);
|
|
|
|
/*!
|
|
* Converts the compressed state into an explicit representation in the form of a valuation.
|
|
*
|
|
* @param state The state to unpack.
|
|
* @param variableInformation The information about how the variables are packed within the state.
|
|
* @param manager The manager responsible for the variables.
|
|
* @return A valuation that corresponds to the compressed state.
|
|
*/
|
|
storm::expressions::SimpleValuation unpackStateIntoValuation(CompressedState const& state, VariableInformation const& variableInformation, storm::expressions::ExpressionManager const& manager);
|
|
|
|
/*!
|
|
* Appends the values of the given variables in the given state to the corresponding result vectors.
|
|
* locationValues are inserted before integerValues (relevant if both, locationValues and integerValues actually refer to the same vector)
|
|
* @param state The state
|
|
* @param variableInformation The variables
|
|
* @param locationValues
|
|
* @param booleanValues
|
|
* @param integerValues
|
|
*/
|
|
void extractVariableValues(CompressedState const& state, VariableInformation const& variableInformation, std::vector<int64_t>& locationValues, std::vector<bool>& booleanValues, std::vector<int64_t>& integerValues);
|
|
|
|
/*!
|
|
* Returns a (human readable) string representation of the variable valuation encoded by the given state
|
|
*/
|
|
std::string toString(CompressedState const& state, VariableInformation const& variableInformation);
|
|
|
|
/*!
|
|
*
|
|
* @param variableInformation
|
|
* @return
|
|
*/
|
|
storm::storage::BitVector computeObservabilityMask(VariableInformation const& variableInformation);
|
|
/*!
|
|
*
|
|
* @param state
|
|
* @param observabilityMap
|
|
* @param mask
|
|
* @return
|
|
*/
|
|
uint32_t unpackStateToObservabilityClass(CompressedState const& state, storm::storage::BitVector const& observationVector, std::unordered_map<storm::storage::BitVector,uint32_t>& observabilityMap, storm::storage::BitVector const& mask);
|
|
/*!
|
|
*
|
|
* @param varInfo
|
|
* @param roundTo64Bit
|
|
* @return
|
|
*/
|
|
CompressedState createOutOfBoundsState(VariableInformation const& varInfo, bool roundTo64Bit = true);
|
|
|
|
}
|
|
}
|
|
|
|
#endif /* STORM_GENERATOR_COMPRESSEDSTATE_H_ */
|
|
|