Closed larkz closed 3 years ago
This is where the logic to update the state should be.
initialState
can stay as is.transition
should handle the two different actions to either: a - first clone the state, then call roll on each Dice class of the state, or b - first clone the state then compute the reward then reset the faces of each dice.reward
should return the current reward tallied in the MDP state.actions
can stay as is.
I could try to refactor this a bit
This class' responsibility is to store a list of Die classes and the reward tallied so far. The class should extend ICloneable to the MDP can clone and modify the state.
This class' responsibility is to store a list of Die classes and the reward tallied so far. The class should extend ICloneable to the MDP can clone and modify the state.
- Keep separate die classes for each die in dice.
- Advantage have different n-sided dice in your set.
- Abstract State should be a list of die classes.
- Computing reward should be calling, .roll() on each die object, and summing.
Keeping 1 abstract Die class is fine, just allow for multiple sided dice (suggestion accept list of ints)
@JunTaoLuo most of the minor changes we discussed - and there were many - have been changed. There is the major change of abstracting the dice class on a per dice basis, but we re-decided to park this issue due to the fact the generating the reward requires knowledge of other dice info. Let me know if the dice abstraction is still required.
Otherwise, please make the other minor changes I might have missed and merge this.
Added in benchmarks for "Push your luck", "GridWorld", and "2048" games Restructured connect4 files.