001    package aima.probability.decision;
002    
003    import java.util.List;
004    
005    import aima.probability.Randomizer;
006    
007    /**
008     * @author Ravi Mohan
009     * 
010     */
011    
012    public interface MDPSource<STATE_TYPE, ACTION_TYPE> {
013            MDP<STATE_TYPE, ACTION_TYPE> asMdp();
014    
015            STATE_TYPE getInitialState();
016    
017            MDPTransitionModel<STATE_TYPE, ACTION_TYPE> getTransitionModel();
018    
019            MDPRewardFunction<STATE_TYPE> getRewardFunction();
020    
021            List<STATE_TYPE> getNonFinalStates();
022    
023            List<STATE_TYPE> getFinalStates();
024    
025            MDPPerception<STATE_TYPE> execute(STATE_TYPE state, ACTION_TYPE action,
026                            Randomizer r);
027    
028            List<ACTION_TYPE> getAllActions();
029    
030    }