Issue139

Title refactor landmark code: turn LM generation methods into factories
Priority wish Status resolved
Superseder Nosy List erez, jendrik, malte, silvan, silvia
Assigned To silvan Keywords
Optional summary

Created on 2010-11-02.00:39:25 by malte, last changed by jendrik.

Files
File name Uploaded Type Edit Remove
unnamed silvia, 2010-12-14.11:55:02 text/html
Messages
msg1479 (view) Author: jendrik Date: 2011-08-05.19:12:15
OK, I have added the regexes to the parser, so this bug can be closed again.
msg1454 (view) Author: malte Date: 2011-08-04.18:57:18
I'm not sure if there is a clear answer to that. It is possible to declare
several landmark graphs (e.g. to be used for different heuristics in an
alternation search), but that's probably a rare use case. So usually only once,
but more than once is possible.
msg1453 (view) Author: jendrik Date: 2011-08-04.18:55:03
Are those values written only once (cumulative) or many times 
(iterative) in the output?
msg1450 (view) Author: malte Date: 2011-08-04.17:20:47
Thanks! Marking this one as resolved -- finally! :-)

Thanks a lot, Silvan!
msg1449 (view) Author: jendrik Date: 2011-08-04.17:20:03
Sure, I'll readd that parsing, you can discard Silvan's changes for now 
since there have been many changes in that file.
msg1448 (view) Author: malte Date: 2011-08-04.17:13:58
I merged Silvan's changes. There are two things I did not merge:

1) Changes to downward_configs.py:

These seemed to overlap significantly with changes in the default branch, and
there was a huge amount of differences between the two branches, so I think it
would be easier to just add back in whatever we need.

2) Changes to downward-resultfetcher.py:

Silvan added two lines there:

    eval.add_pattern('landmarks', r'Discovered (\d+) landmarks', type=int,
required=False)
    eval.add_pattern('landmark time', r'Landmarks generation time: (.+)s',
type=float, required=False)

which I would really like to have in the default branch, but I don't understand
Jendrik's new code in downward-resultfetcher.py well enough to integrate this.
Jendrik, can you help?
msg859 (view) Author: malte Date: 2010-12-14.17:09:25
Erez's idea makes a lot of sense, but I agree with Silvia: refactor first, add
functionality later. Erez, maybe open a new issue for this idea so that it
doesn't get lost.
msg847 (view) Author: silvia Date: 2010-12-14.11:55:02
Hmm, we still need classes that generate the initial landmark graphs though.
I vote for the traditional approach, as Malte suggested, of having the
factories generate landmark graphs. We could possibly extend these factories
at a later stage to be chainable (by having them take as an optional
argument an existing landmark graph to build on). I would defer such
extensions though until we're done with putting the current landmark
functionality into the desired new structure.
msg846 (view) Author: erez Date: 2010-12-14.09:38:11
I like this idea, but I have one small suggestion.
Instead of having these factories *generate* landmark graphs, have them *modify* 
landmark graphs.
So their signature would be:
bool LandmarkFactory::discover(LandmarkGraph &lm_graph)

and they would 
1. Utilize the information already present in the landmarks graph (for example, 
backchain from existing landmarks rather than just goals).
2. Add landmarks/orderings to the given graph

This would allow us to create a landmarks graph that is the combination of 
several landmark generation methods.

I suggest the method return whether it modified the graph or not, which would 
allow us to iteratively combine landmark generation methods until we reach a 
fixpoint.
msg844 (view) Author: malte Date: 2010-12-14.01:15:32
Silvan and I discussed how to approach the refactoring, and we decided that the
first step should be to turn the existing LM generation methods that derive from
LandmarksGraph into factories that do not derive from LandmarksGraph but
*generate* landmark graphs.

In this process, we should hopefully be able to see which parts of the humungous
LandmarksGraph class are only necessary for discovery/construction and which
parts are necessary for maintenance/usage. These latter parts can then be
cleaned up later.

Renaming this issue so that it only refers to this first step of LM code
refactoring. Once we're done, we can add a new issue for the second step. (Or if
someone else wants to work on this concurrently, let us know.)
msg803 (view) Author: malte Date: 2010-12-10.13:40:21
I removed the action landmark code. (I did this directly in the default branch
since Silvan owns the to-be-created issue139 branch.)
msg672 (view) Author: malte Date: 2010-11-02.00:39:25
Silvia, Erez, as always feel free to un-nosy yourself it you don't want to
follow this.

Note: this is not urgent and should be dealt with post-1.0. In particular, we
should wait with this until we've properly assessed the recent changes to the LM
heuristc. I'm just writing this up now so that it doesn't get forgotten.

The landmark code could use some refactoring, and this issue is for keeping
track on what should be done.

I'll start with:

1. Get rid of the remaining traces of action landmark code since we don't use
   that any more.
History
Date User Action Args
2011-08-05 19:12:15jendriksetstatus: chatting -> resolved
messages: + msg1479
2011-08-04 18:57:18maltesetmessages: + msg1454
2011-08-04 18:55:03jendriksetstatus: resolved -> chatting
messages: + msg1453
2011-08-04 17:20:47maltesetstatus: in-progress -> resolved
messages: + msg1450
2011-08-04 17:20:03jendriksetmessages: + msg1449
2011-08-04 17:13:58maltesetnosy: + jendrik
messages: + msg1448
2010-12-14 17:09:25maltesetmessages: + msg859
2010-12-14 11:55:03silviasetfiles: + unnamed
messages: + msg847
2010-12-14 09:38:12erezsetmessages: + msg846
2010-12-14 01:15:32maltesetstatus: chatting -> in-progress
assignedto: silvan
messages: + msg844
title: refactor landmark code -> refactor landmark code: turn LM generation methods into factories
2010-12-10 13:40:21maltesetmessages: + msg803
2010-12-08 15:17:47maltesetnosy: + silvan
keyword: - easy
2010-11-02 17:08:07maltesetkeyword: + easy
2010-11-02 00:39:25maltecreate