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.
57 lines
1.7 KiB
57 lines
1.7 KiB
#ifndef PERMISSIVESCHEDULERCOMPUTATION_H
|
|
#define PERMISSIVESCHEDULERCOMPUTATION_H
|
|
|
|
#include <memory>
|
|
|
|
#include "../storage/BitVector.h"
|
|
#include "../models/sparse/Mdp.h"
|
|
#include "PermissiveSchedulerPenalty.h"
|
|
#include "PermissiveSchedulers.h"
|
|
|
|
namespace storm {
|
|
namespace ps {
|
|
|
|
template<typename RM>
|
|
class PermissiveSchedulerComputation {
|
|
protected:
|
|
storm::models::sparse::Mdp<double, RM> const& mdp;
|
|
storm::storage::BitVector const& mGoals;
|
|
storm::storage::BitVector const& mSinks;
|
|
PermissiveSchedulerPenalties mPenalties;
|
|
|
|
public:
|
|
|
|
PermissiveSchedulerComputation(storm::models::sparse::Mdp<double, RM> const& mdp, storm::storage::BitVector const& goalstates, storm::storage::BitVector const& sinkstates)
|
|
: mdp(mdp), mGoals(goalstates), mSinks(sinkstates)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
virtual void calculatePermissiveScheduler(bool lowerBound, double boundary) = 0;
|
|
|
|
void setPenalties(PermissiveSchedulerPenalties penalties) {
|
|
mPenalties = penalties;
|
|
}
|
|
|
|
PermissiveSchedulerPenalties const& getPenalties() const {
|
|
return mPenalties;
|
|
}
|
|
|
|
PermissiveSchedulerPenalties & getPenalties() {
|
|
return mPenalties;
|
|
}
|
|
|
|
virtual bool foundSolution() const = 0;
|
|
|
|
virtual SubMDPPermissiveScheduler<RM> getScheduler() const = 0;
|
|
|
|
|
|
};
|
|
|
|
}
|
|
}
|
|
|
|
|
|
#endif /* PERMISSIVESCHEDULERCOMPUTATION_H */
|
|
|