24    std::vector<ValueType> exitRates;  
 
   26        exitRates = sparseModel->template as<storm::models::sparse::Ctmc<ValueType>>()->getExitRateVector();
 
   28        exitRates = sparseModel->template as<storm::models::sparse::MarkovAutomaton<ValueType>>()->getExitRates();
 
   32    os << 
"// Exported by storm\n";
 
   33    os << 
"// Original model type: " << sparseModel->getType() << 
'\n';
 
   34    os << 
"@type: " << sparseModel->getType() << 
'\n';
 
   35    os << 
"@parameters\n";
 
   36    if (parameters.empty()) {
 
   37        for (std::string 
const& parameter : 
getParameters(sparseModel)) {
 
   38            os << parameter << 
" ";
 
   41        for (std::string 
const& parameter : parameters) {
 
   42            os << parameter << 
" ";
 
   50    std::unordered_map<ValueType, std::string> placeholders;
 
   54    if (!placeholders.empty()) {
 
   55        os << 
"@placeholders\n";
 
   56        for (
auto const& entry : placeholders) {
 
   57            os << 
"$" << entry.second << 
" : " << entry.first << 
'\n';
 
   61    os << 
"@reward_models\n";
 
   62    for (
auto const& rewardModel : sparseModel->getRewardModels()) {
 
   63        os << rewardModel.first << 
" ";
 
   66    os << 
"@nr_states\n" << sparseModel->getNumberOfStates() << 
'\n';
 
   67    os << 
"@nr_choices\n" << sparseModel->getNumberOfChoices() << 
'\n';
 
   74        os << 
"state " << group;
 
   77        if (!exitRates.empty()) {
 
   79            writeValue(os, exitRates.at(group), placeholders);
 
   83            os << 
" {" << sparseModel->template as<storm::models::sparse::Pomdp<ValueType>>()->getObservation(group) << 
"}";
 
   88        for (
auto const& rewardModelEntry : sparseModel->getRewardModels()) {
 
   96            if (rewardModelEntry.second.hasStateRewards()) {
 
   97                writeValue(os, rewardModelEntry.second.getStateRewardVector().at(group), placeholders);
 
  108        for (
auto const& label : sparseModel->getStateLabeling().getLabelsOfState(group)) {
 
  109            STORM_LOG_THROW(std::count(label.begin(), label.end(), 
'\"') == 0, storm::exceptions::NotSupportedException,
 
  110                            "Labels with quotation marks are not supported in the DRN format and therefore may not be exported.");
 
  112            if (std::count_if(label.begin(), label.end(), isspace) > 0) {
 
  113                os << 
" \"" << label << 
"\"";
 
  120        if (sparseModel->hasStateValuations()) {
 
  121            os << 
"//" << sparseModel->getStateValuations().getStateInfo(group) << 
'\n';
 
  131            if (sparseModel->hasChoiceLabeling()) {
 
  134                if (sparseModel->getChoiceLabeling().getLabelsOfChoice(row).empty()) {
 
  137                for (
auto const& label : sparseModel->getChoiceLabeling().getLabelsOfChoice(row)) {
 
  145                os << 
"\taction " << row - start;
 
  150            for (
auto const& rewardModelEntry : sparseModel->getRewardModels()) {
 
  158                if (rewardModelEntry.second.hasStateActionRewards()) {
 
  159                    writeValue(os, rewardModelEntry.second.getStateActionRewardVector().at(row), placeholders);
 
  170            for (
auto it = matrix.
begin(row); it != matrix.
end(row); ++it) {
 
  171                ValueType prob = it->getValue();
 
  172                os << 
"\t\t" << it->getColumn() << 
" : ";
 
 
  225    std::unordered_map<storm::RationalFunction, std::string> placeholders;
 
  229    for (
auto const& exitRate : exitRates) {
 
  234    for (
auto const& rewardModelEntry : sparseModel->getRewardModels()) {
 
  235        if (rewardModelEntry.second.hasStateRewards()) {
 
  236            for (
auto const& reward : rewardModelEntry.second.getStateRewardVector()) {
 
  240        if (rewardModelEntry.second.hasStateActionRewards()) {
 
  241            for (
auto const& reward : rewardModelEntry.second.getStateActionRewardVector()) {
 
  248    for (
auto const& entry : sparseModel->getTransitionMatrix()) {
 
 
void explicitExportSparseModel(std::ostream &os, std::shared_ptr< storm::models::sparse::Model< ValueType > > sparseModel, std::vector< std::string > const ¶meters, DirectEncodingOptions const &options)
Exports a sparse model into the explicit DRN format.