Issue806

Title add --portfolio-max-plans option
Priority wish Status resolved
Superseder Nosy List jendrik, malte, silvan
Assigned To jendrik Keywords driver
Optional summary

Created on 2018-07-04.15:43:12 by jendrik, last changed by jendrik.

Messages
msg7431 (view) Author: jendrik Date: 2018-09-13.12:31:23
Merged.
msg7408 (view) Author: malte Date: 2018-09-12.15:57:10
If Silvan is happy, feel free to merge.
msg7285 (view) Author: silvan Date: 2018-07-05.16:26:13
Looks good to me.
msg7284 (view) Author: jendrik Date: 2018-07-05.14:02:49
You can find the code at https://bitbucket.org/jendrikseipp/downward/pull-requests/97 .
msg7282 (view) Author: malte Date: 2018-07-04.17:55:11
Sounds good.
msg7281 (view) Author: jendrik Date: 2018-07-04.17:35:08
I agree with all your points. 

For the IPC I actually added a TRACK variable to the portfolios, which could have 
one of the values ["opt", "sat", "cbo", "agl"], but all the code ever tested was 
whether we are running an optimal portfolio (since these use a different code 
path) and whether TRACK=="sat" for deciding whether to stop after finding the 
first plan.

I like the "--portfolio-single-plan" option since it is a backwards-compatible 
change. Shall I implement the feature this way?
msg7279 (view) Author: malte Date: 2018-07-04.17:11:41
Having a way to use the same portfolio in anytime mode or single-plan mode could
be useful, although I'm not sure how often one would want to use exactly the
same portfolio for these two purposes. (I'd expect portfolios designed for
anytime planning to include some sort of cost adaptation etc. that is not needed
in single-plan mode. But perhaps this could be handled in a generic and useful way.)

Not a big fan of making the optimal portfolios more complicated by adding
bound=BOUND everywhere for no good reason. What is the use case? I don't think
satisficing vs. optimal portfolios is the interesting dividing line. The
semantic distinction I see is single-plan vs. anytime. Running a portfolio
designed to produce optimal plans in anytime mode makes no sense, so I'm not
sure I see the point of making them support anytime mode -- any such use is
likely to be a user error that is likely to double the runtime. (First, find the
optimal plan, then run the planner again trying in vain to find a
better-than-optimal plan.)

So: the proposal makes sense in principle, but not yet sold on the details.
Also, is setting the maximum number of plans really a useful distinction, i.e.,
do we ever want a number other than 1 or unbounded here? Supporting an arbitrary
number here also requires changes in the search code for things like iterated
search. I'd be happier with an "--portfolio-anytime" or
"--portfolio-single-plan" option. Either way, it's a bit of a hack, and a
parameterized portfolio would be a cleaner option. But don't let the better be
the enemy of the good here.
msg7277 (view) Author: jendrik Date: 2018-07-04.15:43:12
Currently, the driver only supports portfolios designed for the optimal and 
satisficing IPC tracks. In principle, we can run portfolios for the agile and 
cost-bounded IPC tracks using the code for satisficing portfolios, but this means 
that we don't abort after finding the first plan. This is a minor problem for the 
cost-bounded track where we just waste compute resources, but a bigger problem 
for the agile track where searching for multiple solutions can result in a lower 
IPC score, depending on how the times are measured.

Therefore, I propose to add a --portfolio-max-plans option to the driver.

If you like the idea, in a different issue, we might even think about whether 
this new option allows us to get rid of the distinction between satisficing and 
optimal portfolios in the code. If I see it correctly, we would only need to add 
bound=BOUND to all configurations in optimal portfolios.

What do you think?
History
Date User Action Args
2018-09-13 12:31:23jendriksetstatus: reviewing -> resolved
messages: + msg7431
2018-09-12 15:57:10maltesetmessages: + msg7408
2018-07-05 16:26:13silvansetmessages: + msg7285
2018-07-05 14:02:49jendriksetstatus: chatting -> reviewing
messages: + msg7284
2018-07-04 17:55:11maltesetmessages: + msg7282
2018-07-04 17:35:08jendriksetmessages: + msg7281
2018-07-04 17:11:41maltesetstatus: unread -> chatting
messages: + msg7279
2018-07-04 15:44:38silvansetnosy: + silvan
2018-07-04 15:43:12jendrikcreate