Issue541

Title Integrate h2 in the preprocessor
Priority wish Status resolved
Superseder Nosy List atorralba, gabi, jendrik, malte
Assigned To atorralba Keywords
Optional summary

Created on 2015-06-23.10:45:56 by atorralba, last changed by jendrik.

Messages
msg6395 (view) Author: jendrik Date: 2017-06-28.18:30:46
Álvaro has cloned the repository and made it available at 
https://fai.cs.uni-saarland.de/torralba/software.html . The mercurial repo is at 
https://bitbucket.org/atorralba/h2-fd-preprocessor.
msg6242 (view) Author: jendrik Date: 2017-04-27.14:53:00
Since the preprocessor has been removed now, we need a different way for pruning 
h^2 mutexes. I have therefore taken the liberty to extract the preprocessor code 
(including the h^2 mutexes code) from Álvaro's pull-request and created a 
standalone repository for it at https://bitbucket.org/jendrikseipp/h2-mutexes . 
Currently, only Álvaro and the aibasel group have access to it. The code can be 
used as an intermediate step between translate and search by adjusting Fast 
Downward's driver script slightly.

Álvaro, feel free to clone the repository if you'd like to make it available to 
other people. Also, if you don't like anything about this "arrangement", don't 
hesitate to tell me.

I am closing this issue for now, but feel free to reopen it or create a new one if 
you want to work on a different way of how to integrate h^2 mutex pruning in Fast 
Downward.
msg4285 (view) Author: jendrik Date: 2015-06-29.15:04:51
Álvaro, I had a brief look at the code and have to admit that I currently lack the time 
and the expertise (with regards to h^2 and disambiguation) to properly review the code. 
Also, I agree with Gabi in that adding functionality to the preprocessor runs counter to 
our objective of removing the preprocessor. Probably it's best to wait with this until 
the preprocessor is gone.
msg4276 (view) Author: atorralba Date: 2015-06-23.16:21:38
Hi Gabi, 

I agree that the ideal would be to integrate the whole preprocess into the 
search component. However, as far as I understood, the refactoring integrating 
the preprocessor in the search component may take a while. I saw in the issue 
tracker that this has been on hold for 5 years :)

Moreover, I do not thing this integration is completely trivial. Even after 
including the TaskProxy, some parts are still global (e.g., the task 
representation, causal graph, successor generator, etc). The h2 analysis 
removes operators, facts and variables from the task so it'd need to alter all 
that global structures. The same applies to other preprocess operations such as 
relevance analysis or variable reordering. 

Of course I'm not sure about your plans here. Anyway, just let you know that a 
version of the h2 analysis is ready for integration (modulo some cleanup of the 
code).
msg4274 (view) Author: gabi Date: 2015-06-23.15:03:47
May I ask why you want this analysis in the preprocessor? We want to integrate
the preprocessor into the search, so I am not sure whether we should further
extend its responsibilities before this.

Cheers,
Gabi
msg4273 (view) Author: atorralba Date: 2015-06-23.14:34:17
As Jendrik says, there is no really need for the additional flag, it's just a 
shortcut that we can remove if you think is unnecessary. 

In the current version I have the following parameters for the preprocessor: 
--no_rel: disables relevance analysis (this was already an option in the 
previous version). 
--h2_time_limit <seconds>
--no_h2: disables h2 completely (this is a shortcut for "--h2_time_limit 0"
--augmented_pre: decides whether to put augmented preconditions in the 
operators. This is disabled by default because in our preliminar experiments 
didn't have good synergy with some heuristics. However, it may be good for 
other heuristics such as h^seq. 
--disable_bw_h2: disables the backward analysis. Backward analysis is disabled 
anyways in domains with conditional effects so we also allow to disable it in 
other domains as well. 
--stat: prints additional statistics.

All these are readed as different arguments, 
which means that when using fast-downward.py one must pass all the arguments 
separated. For example to set the time limit to 10 seconds: 
--preprocess-options "--h2_time_limit" --preprocess-options "10"

This is a bit awkward but I don't think a more sophisticated parsing of the 
parameters is that useful in the preprocessor.
msg4268 (view) Author: jendrik Date: 2015-06-23.10:54:50
There should probably be a single flag that sets the maximum time for analysis. 
Setting the time to 0 (default) effectively disables the analysis.
msg4267 (view) Author: atorralba Date: 2015-06-23.10:45:56
Include h2 analysis in the preprocessor.

Include optional flags to the preprocessor to disable h2 or select the maximum 
time employed on it.
History
Date User Action Args
2017-06-28 18:30:46jendriksetmessages: + msg6395
2017-06-28 18:29:56jendriksetmessages: - msg6394
2017-06-28 00:04:15jendriksetmessages: + msg6394
2017-04-27 14:53:00jendriksetstatus: chatting -> resolved
messages: + msg6242
2015-06-29 15:04:52jendriksetmessages: + msg4285
2015-06-23 16:21:38atorralbasetmessages: + msg4276
2015-06-23 15:03:47gabisetnosy: + gabi
messages: + msg4274
2015-06-23 14:34:17atorralbasetmessages: + msg4273
2015-06-23 10:54:50jendriksetstatus: unread -> chatting
messages: + msg4268
2015-06-23 10:45:56atorralbacreate