14 changed files with 305 additions and 68 deletions
-
23src/storm/environment/Environment.cpp
-
13src/storm/environment/Environment.h
-
12src/storm/environment/SubEnvironment.cpp
-
31src/storm/environment/modelchecker/ModelCheckerEnvironment.cpp
-
28src/storm/environment/modelchecker/ModelCheckerEnvironment.h
-
100src/storm/environment/modelchecker/MultiObjectiveModelCheckerEnvironment.cpp
-
48src/storm/environment/modelchecker/MultiObjectiveModelCheckerEnvironment.h
-
6src/storm/modelchecker/multiobjective/multiObjectiveModelChecking.cpp
-
7src/storm/modelchecker/multiobjective/pcaa/SparsePcaaAchievabilityQuery.cpp
-
24src/storm/modelchecker/multiobjective/pcaa/SparsePcaaParetoQuery.cpp
-
18src/storm/modelchecker/multiobjective/pcaa/SparsePcaaQuantitativeQuery.cpp
-
2src/storm/modelchecker/multiobjective/pcaa/SparsePcaaQuantitativeQuery.h
-
57src/storm/modelchecker/multiobjective/pcaa/SparsePcaaQuery.cpp
-
4src/storm/modelchecker/multiobjective/pcaa/SparsePcaaQuery.h
@ -0,0 +1,31 @@ |
|||||
|
#include "storm/environment/modelchecker/ModelCheckerEnvironment.h"
|
||||
|
|
||||
|
#include "storm/environment/modelchecker/MultiObjectiveModelCheckerEnvironment.h"
|
||||
|
|
||||
|
#include "storm/settings/SettingsManager.h"
|
||||
|
#include "storm/utility/macros.h"
|
||||
|
|
||||
|
#include "storm/exceptions/InvalidEnvironmentException.h"
|
||||
|
#include "storm/exceptions/UnexpectedException.h"
|
||||
|
|
||||
|
|
||||
|
namespace storm { |
||||
|
|
||||
|
ModelCheckerEnvironment::ModelCheckerEnvironment() { |
||||
|
// Intentionally left empty
|
||||
|
} |
||||
|
|
||||
|
ModelCheckerEnvironment::~ModelCheckerEnvironment() { |
||||
|
// Intentionally left empty
|
||||
|
} |
||||
|
|
||||
|
MultiObjectiveModelCheckerEnvironment& ModelCheckerEnvironment::multi() { |
||||
|
return multiObjectiveModelCheckerEnvironment.get(); |
||||
|
} |
||||
|
|
||||
|
MultiObjectiveModelCheckerEnvironment const& ModelCheckerEnvironment::multi() const { |
||||
|
return multiObjectiveModelCheckerEnvironment.get(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
@ -0,0 +1,28 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include <memory> |
||||
|
#include <boost/optional.hpp> |
||||
|
|
||||
|
#include "storm/environment/Environment.h" |
||||
|
#include "storm/environment/SubEnvironment.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
|
||||
|
// Forward declare subenvironments |
||||
|
class MultiObjectiveModelCheckerEnvironment; |
||||
|
|
||||
|
class ModelCheckerEnvironment { |
||||
|
public: |
||||
|
|
||||
|
ModelCheckerEnvironment(); |
||||
|
~ModelCheckerEnvironment(); |
||||
|
|
||||
|
MultiObjectiveModelCheckerEnvironment& multi(); |
||||
|
MultiObjectiveModelCheckerEnvironment const& multi() const; |
||||
|
|
||||
|
|
||||
|
private: |
||||
|
SubEnvironment<MultiObjectiveModelCheckerEnvironment> multiObjectiveModelCheckerEnvironment; |
||||
|
}; |
||||
|
} |
||||
|
|
@ -0,0 +1,100 @@ |
|||||
|
#include "storm/environment/modelchecker/MultiObjectiveModelCheckerEnvironment.h"
|
||||
|
|
||||
|
#include "storm/settings/SettingsManager.h"
|
||||
|
#include "storm/settings/modules/MultiObjectiveSettings.h"
|
||||
|
#include "storm/utility/constants.h"
|
||||
|
#include "storm/utility/macros.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
|
||||
|
MultiObjectiveModelCheckerEnvironment::MultiObjectiveModelCheckerEnvironment() { |
||||
|
auto const& multiobjectiveSettings = storm::settings::getModule<storm::settings::modules::MultiObjectiveSettings>(); |
||||
|
method = multiobjectiveSettings.getMultiObjectiveMethod(); |
||||
|
if (multiobjectiveSettings.isExportPlotSet()) { |
||||
|
plotPathUnderApprox = multiobjectiveSettings.getExportPlotDirectory() + "underapproximation.csv"; |
||||
|
plotPathOverApprox = multiobjectiveSettings.getExportPlotDirectory() + "overapproximation.csv"; |
||||
|
plotPathParetoPoints = multiobjectiveSettings.getExportPlotDirectory() + "paretopoints.csv"; |
||||
|
} |
||||
|
|
||||
|
precision = storm::utility::convertNumber<storm::RationalNumber>(multiobjectiveSettings.getPrecision()); |
||||
|
if (multiobjectiveSettings.isMaxStepsSet()) { |
||||
|
maxSteps = multiobjectiveSettings.getMaxSteps(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
MultiObjectiveModelCheckerEnvironment::~MultiObjectiveModelCheckerEnvironment() { |
||||
|
// Intentionally left empty
|
||||
|
} |
||||
|
|
||||
|
storm::modelchecker::multiobjective::MultiObjectiveMethod const& MultiObjectiveModelCheckerEnvironment::getMethod() const { |
||||
|
return this->method; |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::setMethod(storm::modelchecker::multiobjective::MultiObjectiveMethod value) { |
||||
|
this->method = value; |
||||
|
} |
||||
|
|
||||
|
bool MultiObjectiveModelCheckerEnvironment::isExportPlotSet() const { |
||||
|
return this->plotPathUnderApprox.is_initialized() || this->plotPathOverApprox.is_initialized() || this->plotPathParetoPoints.is_initialized(); |
||||
|
} |
||||
|
|
||||
|
boost::optional<std::string> MultiObjectiveModelCheckerEnvironment::getPlotPathUnderApproximation() const { |
||||
|
return plotPathUnderApprox; |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::setPlotPathUnderApproximation(std::string const& path) { |
||||
|
plotPathUnderApprox = path; |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::unsetPlotPathUnderApproximation() { |
||||
|
plotPathUnderApprox = boost::none; |
||||
|
} |
||||
|
|
||||
|
boost::optional<std::string> MultiObjectiveModelCheckerEnvironment::getPlotPathOverApproximation() const { |
||||
|
return plotPathOverApprox; |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::setPlotPathOverApproximation(std::string const& path) { |
||||
|
plotPathOverApprox = path; |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::unsetPlotPathOverApproximation() { |
||||
|
plotPathOverApprox = boost::none; |
||||
|
} |
||||
|
|
||||
|
boost::optional<std::string> MultiObjectiveModelCheckerEnvironment::getPlotPathParetoPoints() const { |
||||
|
return plotPathParetoPoints; |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::setPlotPathParetoPoints(std::string const& path) { |
||||
|
plotPathParetoPoints = path; |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::unsetPlotPathParetoPoints() { |
||||
|
plotPathParetoPoints = boost::none; |
||||
|
} |
||||
|
|
||||
|
storm::RationalNumber const& MultiObjectiveModelCheckerEnvironment::getPrecision() const { |
||||
|
return precision; |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::setPrecision(storm::RationalNumber const& value) { |
||||
|
precision = value; |
||||
|
} |
||||
|
|
||||
|
bool MultiObjectiveModelCheckerEnvironment::isMaxStepsSet() const { |
||||
|
return maxSteps.is_initialized(); |
||||
|
} |
||||
|
|
||||
|
uint64_t const& MultiObjectiveModelCheckerEnvironment::getMaxSteps() const { |
||||
|
return maxSteps.get(); |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::setMaxSteps(uint64_t const& value) { |
||||
|
maxSteps = value; |
||||
|
} |
||||
|
|
||||
|
void MultiObjectiveModelCheckerEnvironment::unsetMaxSteps() { |
||||
|
maxSteps = boost::none; |
||||
|
} |
||||
|
} |
@ -0,0 +1,48 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include <string> |
||||
|
|
||||
|
#include "storm/environment/modelchecker/ModelCheckerEnvironment.h" |
||||
|
#include "storm/modelchecker/multiobjective/MultiObjectiveModelCheckingMethod.h" |
||||
|
#include "storm/adapters/RationalNumberAdapter.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
|
||||
|
class MultiObjectiveModelCheckerEnvironment { |
||||
|
public: |
||||
|
|
||||
|
MultiObjectiveModelCheckerEnvironment(); |
||||
|
~MultiObjectiveModelCheckerEnvironment(); |
||||
|
|
||||
|
storm::modelchecker::multiobjective::MultiObjectiveMethod const& getMethod() const; |
||||
|
void setMethod(storm::modelchecker::multiobjective::MultiObjectiveMethod value); |
||||
|
|
||||
|
bool isExportPlotSet() const; |
||||
|
boost::optional<std::string> getPlotPathUnderApproximation() const; |
||||
|
void setPlotPathUnderApproximation(std::string const& path); |
||||
|
void unsetPlotPathUnderApproximation(); |
||||
|
boost::optional<std::string> getPlotPathOverApproximation() const; |
||||
|
void setPlotPathOverApproximation(std::string const& path); |
||||
|
void unsetPlotPathOverApproximation(); |
||||
|
boost::optional<std::string> getPlotPathParetoPoints() const; |
||||
|
void setPlotPathParetoPoints(std::string const& path); |
||||
|
void unsetPlotPathParetoPoints(); |
||||
|
|
||||
|
storm::RationalNumber const& getPrecision() const; |
||||
|
void setPrecision(storm::RationalNumber const& value); |
||||
|
|
||||
|
uint64_t const& getMaxSteps() const; |
||||
|
bool isMaxStepsSet() const; |
||||
|
void setMaxSteps(uint64_t const& value); |
||||
|
void unsetMaxSteps(); |
||||
|
|
||||
|
|
||||
|
private: |
||||
|
storm::modelchecker::multiobjective::MultiObjectiveMethod method; |
||||
|
boost::optional<std::string> plotPathUnderApprox, plotPathOverApprox, plotPathParetoPoints; |
||||
|
storm::RationalNumber precision; |
||||
|
boost::optional<uint64_t> maxSteps; |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue