Issue32

Title some Enforced Hill Climbing implementation details
Priority wish Status resolved
Superseder Nosy List andrew.coles, erez, gabi, malte
Assigned To Keywords
Optional summary

Created on 2009-10-11.00:31:43 by erez, last changed by erez.

Messages
msg204 (view) Author: erez Date: 2010-01-10.10:36:27
I changed the open list to use state_var_t* instead of complete states.
I also added an option to choose whether to use cost/depth for the BFS.
There is no command line argument for this yet, we are running out of letters.
msg201 (view) Author: malte Date: 2010-01-09.00:37:30
AFAIK, Gabi has made great progress on the command-line thing, but she can tell
you more.
msg200 (view) Author: erez Date: 2010-01-09.00:22:54
All for the lack of a good *. 
I meant to put pointer in the open list, I will change it to State * on Sunday.
I'll also make the g/depth thing a parameter, but we should probably start working 
on the general command line parameter thing, we already have alphabet soup.
msg199 (view) Author: andrew.coles Date: 2010-01-08.23:40:15
We looked at the cost vs depth issue with EHC + the RPG heuristic in Marvin
(ignoring macro-actions, so roughly equivalent to FF).  As you guessed, it's a
trade-off.  Taking the g value into account is generally quicker - sometimes
dramatically so.  But, ignoring it and considering only depth does lead to
slightly better plans.  We left it as a flag, with the default being to use
g-values as IPC2004 was all about speed, and it came out ahead.

(An option we didn't consider would be to use g-values to break ties between
states at the same plateau depth - might help a (very) little when searching at
the depth where a plateau escape lies, though shouldn't do too much to the quality.)
msg198 (view) Author: malte Date: 2010-01-08.22:25:15
OK, I now see that I was confused by the different kinds of evaluation going on
(g vs. h). The search indeed looks lazy.

One thing where I'm unconvinced is whether it's a good idea to put complete
states into the open list -- I fear that in a domain like Satellite, this can be
several orders of magnitudes more memory-intensive than the
parent-pointer/operator pointer pairs used by the old lazy BFS implementation.
(Not sure about the new one, don't know it well enough.) I think this is a
general topic we should discuss at some point (see also issue23).

Anyone have any opinions about the cost vs. depth issue?
msg182 (view) Author: malte Date: 2010-01-07.17:42:59
No, it's probably me. :-) I'm not at all familiar with the evaluator code, so I
probably misread something. I'll look into the code again when I have a bit more
time.

One thing I was wondering about when looking at the code is whether EHC in
cost-based planning should use the g values as a measure of "escape distance" or
just the search depth. That's essentially the question whether you want to
escape plateaus *cheaply* or *quickly* -- probably something that should be
configurable?
msg180 (view) Author: erez Date: 2010-01-06.07:12:42
It's actually a lazy search (or at least it's supposed to be).
After a state is removed from the open list, I check that it's  new  state, and
only if it is, I evaluate it.

Unless I'm missing something?
msg177 (view) Author: malte Date: 2010-01-05.21:03:42
The open list thing is now separated into issue62.
msg175 (view) Author: malte Date: 2010-01-05.21:01:34
Oh, and I agree with Erez that we should have a clear method for open lists.
I'll open a separate issue for that.
msg174 (view) Author: malte Date: 2010-01-05.20:59:49
Hi guys, from my cursory reading of the code, it looks like it is an eager
search, but duplicates are only checked once a state is popped from the open list.

Am I reading this right? In that case, I would suggest testing duplicates
earlier (and I'm pretty sure Jörg's code does that) to save both time and
memory. Generally speaking, no search algorithm (neither eager nor lazy) should
invoke the heuristic estimator on a state that is a duplicate -- duplicates
should be discarded before computing heuristics.

Not sure how significant this actually is, but if anyone wants to test this, I'd
suggest looking at large Satellite tasks with a good heuristic (e.g. h_FF).
msg168 (view) Author: erez Date: 2009-12-29.16:04:19
Checked in EHC implementation.
Gabi - if you implement a clear() operation for open lists, we could save some
time here (now I clear the list by looping over it).
History
Date User Action Args
2010-01-10 10:36:28erezsetstatus: chatting -> resolved
messages: + msg204
2010-01-09 00:37:30maltesetmessages: + msg201
2010-01-09 00:22:54erezsetmessages: + msg200
2010-01-08 23:40:16andrew.colessetnosy: + andrew.coles
messages: + msg199
2010-01-08 22:25:15maltesetmessages: + msg198
title: Implement Enforced Hill Climbing -> some Enforced Hill Climbing implementation details
2010-01-07 17:42:59maltesetmessages: + msg182
2010-01-06 07:12:42erezsetmessages: + msg180
2010-01-05 21:03:42maltesetmessages: + msg177
2010-01-05 21:01:34maltesetmessages: + msg175
2010-01-05 20:59:50maltesetstatus: resolved -> chatting
messages: + msg174
2009-12-29 16:04:19erezsetstatus: in-progress -> resolved
nosy: + gabi
messages: + msg168
2009-12-24 15:27:38erezsetstatus: chatting -> in-progress
2009-10-11 15:47:05maltesetnosy: + malte
2009-10-11 00:31:43erezcreate