Stefan Pranger
3 years ago
10 changed files with 312 additions and 89 deletions
-
14src/storm/shields/PostSafetyShield.cpp
-
13src/storm/shields/PreSafetyShield.cpp
-
60src/storm/storage/PostScheduler.cpp
-
22src/storm/storage/PostScheduler.h
-
63src/storm/storage/PostSchedulerChoice.cpp
-
46src/storm/storage/PostSchedulerChoice.h
-
43src/storm/storage/PreScheduler.cpp
-
28src/storm/storage/PreScheduler.h
-
56src/storm/storage/PreSchedulerChoice.cpp
-
42src/storm/storage/PreSchedulerChoice.h
@ -0,0 +1,63 @@ |
|||||
|
#include "storm/storage/PostSchedulerChoice.h"
|
||||
|
|
||||
|
#include "storm/utility/constants.h"
|
||||
|
#include "storm/utility/macros.h"
|
||||
|
|
||||
|
#include "storm/exceptions/InvalidOperationException.h"
|
||||
|
#include "storm/adapters/RationalFunctionAdapter.h"
|
||||
|
#include "storm/adapters/RationalNumberAdapter.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace storage { |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
PostSchedulerChoice<ValueType>::PostSchedulerChoice() { |
||||
|
// Intentionally left empty
|
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
void PostSchedulerChoice<ValueType>::addChoice(uint_fast64_t oldChoiceIndex, uint_fast64_t newChoiceIndex) { |
||||
|
choiceMap.emplace_back(oldChoiceIndex, newChoiceIndex); |
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
std::vector<std::tuple<uint_fast64_t, uint_fast64_t>> const& PostSchedulerChoice<ValueType>::getChoiceMap() const { |
||||
|
return choiceMap; |
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
std::tuple<uint_fast64_t, uint_fast64_t> const& PostSchedulerChoice<ValueType>::getChoice(uint_fast64_t choiceIndex) const { |
||||
|
return choiceMap.at(choiceIndex); |
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
bool PostSchedulerChoice<ValueType>::isEmpty() const { |
||||
|
return choiceMap.size() == 0; |
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
std::ostream& operator<<(std::ostream& out, PostSchedulerChoice<ValueType> const& schedulerChoice) { |
||||
|
if (!schedulerChoice.isEmpty()) { |
||||
|
bool firstChoice = true; |
||||
|
for(auto const& choice : schedulerChoice.getChoiceMap()) { |
||||
|
if(firstChoice) firstChoice = false; |
||||
|
else out << ", "; |
||||
|
out << std::get<0>(choice) << " -> " << std::get<1>(choice); |
||||
|
} |
||||
|
} else { |
||||
|
out << "undefined"; |
||||
|
} |
||||
|
return out; |
||||
|
} |
||||
|
|
||||
|
template class PostSchedulerChoice<double>; |
||||
|
template std::ostream& operator<<(std::ostream& out, PostSchedulerChoice<double> const& schedulerChoice); |
||||
|
template class PostSchedulerChoice<float>; |
||||
|
template std::ostream& operator<<(std::ostream& out, PostSchedulerChoice<float> const& schedulerChoice); |
||||
|
template class PostSchedulerChoice<storm::RationalNumber>; |
||||
|
template std::ostream& operator<<(std::ostream& out, PostSchedulerChoice<storm::RationalNumber> const& schedulerChoice); |
||||
|
template class PostSchedulerChoice<storm::RationalFunction>; |
||||
|
template std::ostream& operator<<(std::ostream& out, PostSchedulerChoice<storm::RationalFunction> const& schedulerChoice); |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,46 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "storm/utility/constants.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace storage { |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
class PostSchedulerChoice { |
||||
|
|
||||
|
public: |
||||
|
|
||||
|
/*! |
||||
|
* Creates an undefined scheduler choice |
||||
|
*/ |
||||
|
PostSchedulerChoice(); |
||||
|
|
||||
|
/* |
||||
|
* |
||||
|
*/ |
||||
|
void addChoice(uint_fast64_t oldChoiceIndex, uint_fast64_t newChoiceIndex); |
||||
|
|
||||
|
/* |
||||
|
* |
||||
|
*/ |
||||
|
bool isEmpty() const; |
||||
|
|
||||
|
/* |
||||
|
* |
||||
|
*/ |
||||
|
std::vector<std::tuple<uint_fast64_t, uint_fast64_t>> const& getChoiceMap() const; |
||||
|
|
||||
|
/* |
||||
|
* |
||||
|
*/ |
||||
|
std::tuple<uint_fast64_t, uint_fast64_t> const& getChoice(uint_fast64_t choiceIndex) const; |
||||
|
|
||||
|
private: |
||||
|
//std::vector<std::tuple<uint_fast64_t, storm::storage::Distribution<ValueType, uint_fast64_t>>> choiceMap; |
||||
|
std::vector<std::tuple<uint_fast64_t, uint_fast64_t>> choiceMap; |
||||
|
}; |
||||
|
|
||||
|
template<typename ValueType> |
||||
|
std::ostream& operator<<(std::ostream& out, PostSchedulerChoice<ValueType> const& schedulerChoice); |
||||
|
} |
||||
|
} |
@ -0,0 +1,56 @@ |
|||||
|
#include "storm/storage/PreSchedulerChoice.h"
|
||||
|
|
||||
|
#include "storm/utility/constants.h"
|
||||
|
#include "storm/utility/macros.h"
|
||||
|
|
||||
|
#include "storm/exceptions/InvalidOperationException.h"
|
||||
|
#include "storm/adapters/RationalFunctionAdapter.h"
|
||||
|
#include "storm/adapters/RationalNumberAdapter.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace storage { |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
PreSchedulerChoice<ValueType>::PreSchedulerChoice() { |
||||
|
// Intentionally left empty
|
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
void PreSchedulerChoice<ValueType>::addChoice(uint_fast64_t choiceIndex, ValueType probToSatisfy) { |
||||
|
choiceMap.emplace_back(probToSatisfy, choiceIndex); |
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
std::vector<std::tuple<ValueType, uint_fast64_t>> const& PreSchedulerChoice<ValueType>::getChoiceMap() const { |
||||
|
return choiceMap; |
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
bool PreSchedulerChoice<ValueType>::isEmpty() const { |
||||
|
return choiceMap.size() == 0; |
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
std::ostream& operator<<(std::ostream& out, PreSchedulerChoice<ValueType> const& schedulerChoice) { |
||||
|
out << schedulerChoice.getChoiceMap().size(); |
||||
|
if (!schedulerChoice.isEmpty()) { |
||||
|
for(auto const& choice : schedulerChoice.getChoiceMap()) { |
||||
|
out << std::get<0>(choice) << ": " << std::get<1>(choice); |
||||
|
} |
||||
|
} else { |
||||
|
out << "undefined"; |
||||
|
} |
||||
|
return out; |
||||
|
} |
||||
|
|
||||
|
template class PreSchedulerChoice<double>; |
||||
|
template std::ostream& operator<<(std::ostream& out, PreSchedulerChoice<double> const& schedulerChoice); |
||||
|
template class PreSchedulerChoice<float>; |
||||
|
template std::ostream& operator<<(std::ostream& out, PreSchedulerChoice<float> const& schedulerChoice); |
||||
|
template class PreSchedulerChoice<storm::RationalNumber>; |
||||
|
template std::ostream& operator<<(std::ostream& out, PreSchedulerChoice<storm::RationalNumber> const& schedulerChoice); |
||||
|
template class PreSchedulerChoice<storm::RationalFunction>; |
||||
|
template std::ostream& operator<<(std::ostream& out, PreSchedulerChoice<storm::RationalFunction> const& schedulerChoice); |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "storm/utility/constants.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace storage { |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
class PreSchedulerChoice { |
||||
|
|
||||
|
public: |
||||
|
|
||||
|
/*! |
||||
|
* Creates an undefined scheduler choice |
||||
|
*/ |
||||
|
PreSchedulerChoice(); |
||||
|
|
||||
|
/* |
||||
|
* |
||||
|
*/ |
||||
|
void addChoice(uint_fast64_t choiceIndex, ValueType probToSatisfy); |
||||
|
|
||||
|
/* |
||||
|
* |
||||
|
*/ |
||||
|
bool isEmpty() const; |
||||
|
|
||||
|
/* |
||||
|
* |
||||
|
*/ |
||||
|
std::vector<std::tuple<ValueType, uint_fast64_t>> const& getChoiceMap() const; |
||||
|
|
||||
|
private: |
||||
|
// For now we only consider shields with deterministic choices. |
||||
|
//std::map<ValueType, storm::storage::Distribution<ValueType, uint_fast64_t>> choiceMap; |
||||
|
std::vector<std::tuple<ValueType, uint_fast64_t>> choiceMap; |
||||
|
}; |
||||
|
|
||||
|
template<typename ValueType> |
||||
|
std::ostream& operator<<(std::ostream& out, PreSchedulerChoice<ValueType> const& schedulerChoice); |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue