-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[MRG] ENH: Small improvements for agents.py #1139
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One question: Is there any need to add non-regression tests for these improvements?
@@ -535,10 +541,12 @@ def move_to(self, thing, destination): | |||
t.location = destination | |||
return thing.bump | |||
|
|||
def add_thing(self, thing, location=(1, 1), exclude_duplicate_class_items=False): | |||
def add_thing(self, thing, location=None, exclude_duplicate_class_items=False): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whenever this parameter is None
, it is somehow causing the tests to fail while the default parameter (1,1)
works fine with these modifications. I tried to debug the defualt_location
method but it seems fine! I am a little confused why the tests are failing...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright, due to the random placement of things in the Wumpus agent environment, the agent dies due to this line:
Line 958 in fbdb36d
if isinstance(agent, Explorer) and self.in_danger(agent): |
I think the only choice is to let the parameter location
as is for now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. @antmarakis
Please suggest improvements, if any!
# the seed if the tests are failing with | ||
# current changes in any stochastic method | ||
# function or variable. | ||
random.seed(9) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm... So, the thing that was causing tests to fail was the random seed. Changing it across a couple of tests was just about it! The code is up and running fine!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the contributions, much appreciated!
Changing the random seed isn't really fixing the problem though, but masking it.
Maybe the problem though is not with your changes but with some other piece of code. I suggest you try using different seeds on the original code (before your changes) and see what happens.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried many different seeds and these are the results I got:
- When the seed is set to
"aima-python"
globally, all the tests pass. - When the seed is set to
"aima-python"
individually in each function,test_WumpusEnvironmentActions
fails (reason: agent dies due toPit
orWumpus
object atagent.location
) - When the seed is set to
9
for the testtest_WumpusEnvironmentActions
, the tests pass.
I think there is no problem with the code but the random placement of things is affected due to the seed in Wumpus environment and so the agent dies.
The code is available at this branch of my fork.
I have a question regarding |
The documentation page says:
I think we only need support for python 3.4 and above... |
Improvements implemented in this PR:
move_forward
in classDirection
to return the results with the sameiterable
it is called with. Example:move_forward((1,0))
returns(2,0)
whilemove_forward([1,0])
returns[2,0]
. This can be helpful when alist
is used instead oftuple
to modify the dimensions using index operators.default_location
returned thelocation
that may consist ofObstacle
objects. Modify the method to return a valid location to add the thing.conceal
in classGraphicEnvironment
didn't hide the canvas. Instead, it created a new canvas and applied the changes to it while the previous canvas remained intact. Modified the method to apply changes to the same grid instead of drawing a new one.collections.Callable
tocollections.abc.Callable
to support Python 3.8