// If the row has no elements in it, we cannot make it absorbing, because we would need to move all elements
// in the vector of nonzeros otherwise.
if(columnValuePtr>=columnValuePtrEnd){
throwstorm::exceptions::InvalidStateException()<<"Illegal call to SparseMatrix::makeRowDirac: cannot make row "<<row<<" absorbing, but there is no entry in this row.";
throwstorm::exceptions::InvalidStateException()<<"Illegal call to SparseMatrix::makeRowDirac: cannot make row "<<row<<" absorbing, because there is no entry in this row.";
}
iteratorlastColumnValuePtr=this->end(row)-1;
// If there is at least one entry in this row, we can just set it to one, modify its column value to the
// If there is at least one entry in this row, we can set it to one, modify its column value to the
// one given by the parameter and set all subsequent elements of this row to zero.
STORM_LOG_THROW(originalModel.isOfType(storm::models::ModelType::Dtmc)||originalModel.isOfType(storm::models::ModelType::Mdp),storm::exceptions::UnexpectedException,"Unexpected model type.");
}
// Nothing to be done if the model has deadlock States
STORM_LOG_THROW(options.fixDeadlocks,storm::exceptions::InvalidOperationException,"Expected that in each state, at least one action is selected. Got a deadlock state instead. (violated at "<<subsysState<<")");
// If we have deadlock states we keep an action in each rowgroup of a deadlock states.
boolhasDeadlockStates=!deadlockStates.empty();
if(options.buildKeptActions){
// store them now, before changing them.
result.keptActions=keptActions;
}
STORM_LOG_ASSERT(atLeastOneActionSelected,"Expected that in each state, at least one action is selected. (violated at "<<subsysState<<")");
STORM_LOG_ASSERT(keepAtLeastOneAction,"Expected that in each state, at least one action is preserved at least one action is selected. (violated at "<<subsysState<<")");