#! /usr/bin/env python """ Example downward experiment that runs FF on a single problem. Please adapt EXPPATH and REPO to be the path where the experiment shall be put and the location of your Fast Downward repository. The file planner-ext.py contains an "advanced" version of this basic experiment. """ from downward.experiment import DownwardExperiment from downward.reports.absolute import AbsoluteReport EXPPATH = 'exp-planner' REPO = '/home/jendrik/projects/Downward/downward' exp = DownwardExperiment(EXPPATH, REPO) exp.add_suite('gripper:prob01.pddl') exp.add_config('ff', ['--search', 'lazy(single(ff()))']) exp.add_report(AbsoluteReport()) exp()
from downward.reports.hstar_2_h_stat import HstarToHRatioAndStatistics from downward import suites from downward.reports.MyPlot import ProblemPlotReport EXPPATH = 'exp-lmcut-240514' REPO = os.path.expanduser('~/downward') ENV = LocalEnvironment(processes=8) CONFIGS = [('lmcut', ['--search', 'astar(lmcut())'])] ATTRIBUTES = [ 'coverage', 'expansions', 'initial_h_value', 'cost', 'hstar_to_h', 'statistics', 'commualtive_hstar_to_h' ] exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV, limits={'search_time': 3000}) exp.add_suite(suites.suite_unit_costs()) for nick, config in CONFIGS: exp.add_config(nick, config) # Make a report containing absolute numbers (this is the most common report). report = os.path.join(exp.eval_dir, 'report_test.html') exp.add_report(HstarToHRatioAndStatistics(attributes=ATTRIBUTES), outfile=report) # Test Plot - TODO exp.add_step( Step('report-plot-cat', ProblemPlotReport(), exp.eval_dir, os.path.join(exp.eval_dir, 'plots')))
import standard_exp DIR = os.path.dirname(os.path.abspath(__file__)) EXPNAME = 'showcase-options' EXPPATH = 'exp-lmcut-showcase' REPO = os.path.expanduser('~/downward') ENV = LocalEnvironment(processes=1) ATTRIBUTES = ['coverage'] LIMITS = {'search_time': 100} COMBINATIONS = [(Translator(repo=REPO), Preprocessor(repo=REPO), Planner(repo=REPO))] exp = DownwardExperiment(EXPPATH, repo=REPO, environment=ENV, combinations=COMBINATIONS, limits=LIMITS, cache_dir=standard_exp.CACHE_DIR) exp.set_path_to_python(standard_exp.PYTHON) exp.add_suite('gripper:prob01.pddl') exp.add_suite('zenotravel:pfile1', benchmark_dir=os.path.join(REPO, 'benchmarks')) exp.add_config('iter-hadd', [ '--heuristic', 'hadd=add()', '--search', 'iterated([lazy_greedy([hadd]),lazy_wastar([hadd])],repeat_last=true)']) exp.add_config('ipdb', ["--search", "astar(ipdb())"], timeout=10) # Use original LAMA 2011 configuration exp.add_config('lama11', ['ipc', 'seq-sat-lama-2011', '--plan-file', 'sas_plan']) exp.add_config('fdss-1', ['ipc', 'seq-sat-fdss-1', '--plan-file', 'sas_plan']) exp.add_portfolio(os.path.join(REPO, 'src', 'search', 'downward-seq-opt-fdss-1.py')) # Before we fetch the new results, delete the old ones exp.steps.insert(5, Step('delete-old-results', shutil.rmtree, exp.eval_dir, ignore_errors=True))
from downward import suites from downward.reports.MyPlot import ProblemPlotReport from lab.EnvHandler import BASE_REPO EXPPATH = 'PAC_Preprocess_Output' REPO = os.path.expanduser(BASE_REPO) ENV = LocalEnvironment(processes=4) CONFIGS = [('lmcut', ['--search', 'astar(lmcut())'])] ATTRIBUTES = [ 'coverage', 'expansions', 'initial_h_value', 'cost', 'hstar_to_h', 'statistics', 'commualtive_hstar_to_h' ] exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV, limits={'search_time': 600}) # exp.add_suite({'grid','ferry','logistics'}) exp.add_suite({'blocks:probBLOCKS-4-1.pddl'}) #exp.add_suite({'airport:p45-domain.pddl'}) #exp.add_suite({'blocks'}) #exp.add_suite({'blocks','tpp','storage',}) # exp.add_suite({'blocks','tpp','schedule','storage'}) #exp.add_suite({'blocks','tpp','storage','schedule','logistics00','rovers','satellite','trucks'}) #exp.add_suite({'blocks', 'tpp','storage', 'schedule','rovers'}) #exp.add_suite({'satellite','trucks',}) #exp.add_suite({'trucks','trucks-strips','visitall-opt11-strips','visitall-sat11-strips','woodworking-opt08-strips','woodworking-opt11-strips','woodworking-sat08-strips','woodworking-sat11-strips','zenotravel','tidybot-opt11-strips','tidybot-sat11-strips','miconic','miconic-fulladl','movie','mprime','mystery','no-mprime','no-mystery'}) # exp.add_suite({'blocks:probBLOCKS-8-0.pddl','blocks:probBLOCKS-8-1.pddl','blocks:probBLOCKS-4-0.pddl','blocks:probBLOCKS-5-1.pddl'}) #exp.add_suite({'gripper:prob02.pddl'})
def __init__(self, path=None, repo=None, environment=None, combinations=None, limits=None, attributes=None, derived_properties=None, priority=0, queue=None, processes=2, email=None, cache_dir=CACHE_DIR, **kwargs): if path is None: path = os.path.splitext(os.path.basename(sys.argv[0]))[0] expname = os.path.basename(path) remote_exppath = os.path.join(REMOTE_EXPS, path) local_exppath = os.path.join(LOCAL_EXPS, path) if REMOTE: exppath = remote_exppath repo = repo or REMOTE_REPO environment = environment or MaiaEnvironment( priority=priority, queue=queue, email=email) else: exppath = local_exppath repo = repo or LOCAL_REPO environment = environment or LocalEnvironment(processes=processes) DownwardExperiment.__init__(self, path=exppath, environment=environment, repo=repo, combinations=combinations, limits=limits, cache_dir=cache_dir, **kwargs) self.set_path_to_python(PYTHON) if attributes is None: attributes = ATTRIBUTES # Add report steps abs_report_file = os.path.join(self.eval_dir, '%s-abs.html' % expname) self.add_report(AbsoluteReport(attributes=attributes, colored=True, derived_properties=derived_properties), name='report-abs', outfile=abs_report_file) if REMOTE: # Compress the experiment directory self.add_step(Step.zip_exp_dir(self)) self.add_step( Step('zip-eval-dir', call, [ 'tar', '-cjf', self.name + '-eval.tar.bz2', self.name + '-eval' ], cwd=os.path.dirname(self.path))) self.add_step(Step.remove_exp_dir(self)) self.add_step( Step('remove-eval-dir', shutil.rmtree, self.eval_dir, ignore_errors=True)) if not REMOTE: # Copy the results to local directory self.add_step( Step('scp-eval-dir', call, [ 'scp', '-r', '%s:%s-eval' % (SCP_LOGIN, remote_exppath), '%s-eval' % local_exppath ])) # Copy the results to local directory self.add_step( Step('scp-zipped-eval-dir', call, [ 'scp', '-r', '%s:%s-eval.tar.bz2' % (SCP_LOGIN, remote_exppath), '%s-eval.tar.bz2' % local_exppath ])) # Copy the zipped experiment directory to local directory self.add_step( Step('scp-exp-dir', call, [ 'scp', '-r', '%s:%s.tar.bz2' % (SCP_LOGIN, remote_exppath), '%s.tar.bz2' % local_exppath ])) # Unzip the experiment directory self.add_step(Step.unzip_exp_dir(self)) self.add_step( Step('unzip-eval-dir', call, ['tar', '-xjf', self.name + '-eval.tar.bz2'], cwd=os.path.dirname(self.path)))
from downward.reports.suite import SuiteReport from downward.reports.scatter import ScatterPlotReport from lab.steps import Step # from downward import suites # from downward.checkouts import Translator, Preprocessor, Planner EXPPATH = 'exp-planner' REPO = '/home/jendrik/projects/Downward/downward' # combos = [ # (Translator(REPO, rev='WORK'), Preprocessor(REPO, rev=3097), Planner(REPO)), # (Translator(REPO, rev='WORK'), Preprocessor(REPO, rev=3097), Planner(MYOTHER_REPO)), # ] exp = DownwardExperiment(EXPPATH, REPO, # combinations=combos, limits={'search_time': 60}) exp.add_suite(['gripper:prob01.pddl']) exp.add_suite('zenotravel:pfile2') exp.add_config('ff', ['--search', 'lazy(single(ff()))']) exp.add_config('add', ['--search', 'lazy(single(add()))']) exp.add_portfolio(os.path.join(REPO, 'src', 'search', 'downward-seq-sat-fdss-1.py')) exp.add_report(AbsoluteReport('problem'), name='make-report', outfile='report-abs-p.html') def solved(run): return run['coverage'] == 1 exp.add_step(Step('suite', SuiteReport(filter=solved), exp.eval_dir, os.path.join(exp.eval_dir, 'suite.py')))
from downward.reports.suite import SuiteReport from downward.reports.scatter import ScatterPlotReport from lab.steps import Step # from downward import suites # from downward.checkouts import Translator, Preprocessor, Planner EXPPATH = 'exp-planner' REPO = '/home/jendrik/projects/Downward/downward' # combos = [ # (Translator(REPO, rev='WORK'), Preprocessor(REPO, rev=3097), Planner(REPO)), # (Translator(REPO, rev='WORK'), Preprocessor(REPO, rev=3097), Planner(MYOTHER_REPO)), # ] exp = DownwardExperiment( EXPPATH, REPO, # combinations=combos, limits={'search_time': 60}) exp.add_suite(['gripper:prob01.pddl']) exp.add_suite('zenotravel:pfile2') exp.add_config('ff', ['--search', 'lazy(single(ff()))']) exp.add_config('add', ['--search', 'lazy(single(add()))']) exp.add_portfolio( os.path.join(REPO, 'src', 'search', 'downward-seq-sat-fdss-1.py')) exp.add_report(AbsoluteReport('problem'), name='make-report', outfile='report-abs-p.html') def solved(run):
from downward.experiment import DownwardExperiment from downward.reports.absolute import AbsoluteReport from downward.reports.hstar_2_h_stat import HstarToHRatioAndStatistics from downward import suites from downward.reports.MyPlot import ProblemPlotReport EXPPATH = 'PAC_Preprocess_Output_exp_freecell' REPO = os.path.expanduser('~/downward') ENV = LocalEnvironment(processes=6) CONFIGS = [('lmcut', ['--search', 'astar(lmcut())']) ] ATTRIBUTES = ['coverage', 'expansions','initial_h_value','cost','hstar_to_h','statistics','commualtive_hstar_to_h'] exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV, limits={'search_time': 300}) exp.add_suite({'freecell'}) for nick, config in CONFIGS: exp.add_config(nick, config) # Make a report containing absolute numbers (this is the most common report). file_name_for_report = 'report_' + nick +'.html' report = os.path.join(exp.eval_dir, file_name_for_report) file_name_for_preprocess = os.path.join(exp.eval_dir, 'preprocess') exp.add_report(HstarToHRatioAndStatistics(nick,file_name_for_preprocess,attributes=ATTRIBUTES), outfile=report) # Plot sub_dir = 'plots_' + nick exp.add_step(Step('report-plot-cat', ProblemPlotReport(),
import subprocess from lab.steps import Step from lab.environments import LocalEnvironment from downward.experiment import DownwardExperiment from downward.reports.absolute import AbsoluteReport EXPPATH = 'exp-lmcut' REPO = os.path.expanduser('~/downward') ENV = LocalEnvironment(processes=2) SUITE = ['airport'] CONFIGS = [('lmcut', ['--search', 'astar(lmcut())'])] ATTRIBUTES = ['coverage', 'expansions'] exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV) exp.add_suite(SUITE) for nick, config in CONFIGS: exp.add_config(nick, config) # Make a report containing absolute numbers (this is the most common report). report = os.path.join(exp.eval_dir, 'report.html') exp.add_report(AbsoluteReport(attributes=ATTRIBUTES), outfile=report) # "Publish" the results with "cat" for demonstration purposes. exp.add_step(Step('publish-report', subprocess.call, ['cat', report])) # Compress the experiment directory. exp.add_step(Step.zip_exp_dir(exp)) # Parse the commandline and show or run experiment steps.
# os.environ["delta"] ='0' # os.environ["weight"] ='0' # print "anytime_test" tmp = 'lazy_anytime_wastar(lmcut(), w={0}, delta={1}, epsilon={2}, rpac_lower_bound={3}, rpac_open_based={4})'.format(os.environ["weight"], os.environ["delta"], os.environ["epsilon"], os.environ["is_lower_bound_pac"], os.environ["is_open_based_pac"]) # print tmp # print 'exiting...' # sys.exit(0) # print 'didnt succeed....' CONFIGS = [('lmcut', ['--search', tmp]) ] ATTRIBUTES = ['coverage', 'expansions','initial_h_value','cost','hstar_to_h','statistics','commualtive_hstar_to_h'] exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV, limits={'search_time': 300}) #exp.add_suite({'freecell:pfile5'}) #exp.add_suite({'grid:prob_grid_29982290.pddl','grid:prob_grid_58992290.pddl','grid:prob_grid_0101192290.pddl'}) #exp.add_suite({'grid:prob_grid_29982290.pddl'}) #exp.add_suite({'grid','ferry','logistics'}) # exp.add_suite({'blocks'}) # exp.add_suite({'blocks:probBLOCKS-8-0.pddl','blocks:probBLOCKS-8-1.pddl','blocks:probBLOCKS-9-0.pddl','blocks:probBLOCKS-9-1.pddl', 'blocks:probBLOCKS-11-1.pddl'}) exp.add_suite({'blocks:probBLOCKS-9-0.pddl'}) # exp.add_suite({'airport'}) for nick, config in CONFIGS: exp.add_config(nick, config) # Make a report containing absolute numbers (this is the most common report). file_name_for_report = 'report_' + nick +'.html'
DIR = os.path.dirname(os.path.abspath(__file__)) EXPNAME = 'showcase-options' EXPPATH = 'exp-lmcut-showcase' REPO = os.path.expanduser('~/downward') ENV = LocalEnvironment(processes=1) ATTRIBUTES = ['coverage'] LIMITS = {'search_time': 100} COMBINATIONS = [(Translator(repo=REPO), Preprocessor(repo=REPO), Planner(repo=REPO))] exp = DownwardExperiment(EXPPATH, repo=REPO, environment=ENV, combinations=COMBINATIONS, limits=LIMITS, cache_dir=standard_exp.CACHE_DIR) exp.set_path_to_python(standard_exp.PYTHON) exp.add_suite('gripper:prob01.pddl') exp.add_suite('zenotravel:pfile1', benchmark_dir=os.path.join(REPO, 'benchmarks')) exp.add_config('iter-hadd', [ '--heuristic', 'hadd=add()', '--search', 'iterated([lazy_greedy([hadd]),lazy_wastar([hadd])],repeat_last=true)' ]) exp.add_config('ipdb', ["--search", "astar(ipdb())"], timeout=10) # Use original LAMA 2011 configuration exp.add_config('lama11', ['ipc', 'seq-sat-lama-2011', '--plan-file', 'sas_plan'])
from downward.reports.hstar_2_h import HstarToHRatio EXPPATH = 'exp-lmcut-no-timeout' REPO = os.path.expanduser('~/downward') #Run with 6 processes ENV = LocalEnvironment(processes=6) CONFIGS = [('lmcut', ['--search', 'astar(lmcut())'])] ATTRIBUTES = ['coverage', 'expansions','initial_h_value','cost','hstar_to_h'] #All with timeout #exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV, limits={'search_time': 100}) #exp.add_suite(suites.suite_all()) #Only lmcut domains without timeout exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV) exp.add_suite(suites.suite_lmcut_domains()) for nick, config in CONFIGS: exp.add_config(nick, config) # Make a report containing absolute numbers with h*/h values. report = os.path.join(exp.eval_dir, 'report.html') exp.add_report(HstarToHRatio(attributes=ATTRIBUTES), outfile=report) # "Publish" the results with "cat" for demonstration purposes. exp.add_step(Step('publish-report', subprocess.call, ['cat', report])) # Compress the experiment directory. exp.add_step(Step.zip_exp_dir(exp))
from downward.reports.hstar_2_h_stat import HstarToHRatioAndStatistics from downward import suites from downward.reports.MyPlot import ProblemPlotReport EXPPATH = 'PAC_Preprocess_Output' REPO = os.path.expanduser('~/downward') ENV = LocalEnvironment(processes=4) CONFIGS = [('lmcut', ['--search', 'astar(lmcut())'])] ATTRIBUTES = [ 'coverage', 'expansions', 'initial_h_value', 'cost', 'hstar_to_h', 'statistics', 'commualtive_hstar_to_h' ] exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV, limits={'search_time': 300}) exp.add_suite({'airport', 'blocks', 'freecell'}) for nick, config in CONFIGS: exp.add_config(nick, config) # Make a report containing absolute numbers (this is the most common report). file_name_for_report = 'report_' + nick + '.html' report = os.path.join(exp.eval_dir, file_name_for_report) file_name_for_preprocess = os.path.join(exp.eval_dir, 'preprocess') exp.add_report(HstarToHRatioAndStatistics(nick, file_name_for_preprocess, attributes=ATTRIBUTES), outfile=report)
def __init__(self, path=None, repo=None, environment=None, combinations=None, limits=None, attributes=None, derived_properties=None, priority=0, queue=None, processes=2, email=None, cache_dir=CACHE_DIR, **kwargs): if path is None: path = os.path.splitext(os.path.basename(sys.argv[0]))[0] expname = os.path.basename(path) remote_exppath = os.path.join(REMOTE_EXPS, path) local_exppath = os.path.join(LOCAL_EXPS, path) if REMOTE: exppath = remote_exppath repo = repo or REMOTE_REPO environment = environment or MaiaEnvironment(priority=priority, queue=queue, email=email) else: exppath = local_exppath repo = repo or LOCAL_REPO environment = environment or LocalEnvironment(processes=processes) DownwardExperiment.__init__(self, path=exppath, environment=environment, repo=repo, combinations=combinations, limits=limits, cache_dir=cache_dir, **kwargs) self.set_path_to_python(PYTHON) if attributes is None: attributes = ATTRIBUTES # Add report steps abs_report_file = os.path.join(self.eval_dir, '%s-abs.html' % expname) self.add_report(AbsoluteReport(attributes=attributes, colored=True, derived_properties=derived_properties), name='report-abs', outfile=abs_report_file) if REMOTE: # Compress the experiment directory self.add_step(Step.zip_exp_dir(self)) self.add_step(Step('zip-eval-dir', call, ['tar', '-cjf', self.name + '-eval.tar.bz2', self.name + '-eval'], cwd=os.path.dirname(self.path))) self.add_step(Step.remove_exp_dir(self)) self.add_step(Step('remove-eval-dir', shutil.rmtree, self.eval_dir, ignore_errors=True)) if not REMOTE: # Copy the results to local directory self.add_step(Step('scp-eval-dir', call, [ 'scp', '-r', '%s:%s-eval' % (SCP_LOGIN, remote_exppath), '%s-eval' % local_exppath])) # Copy the results to local directory self.add_step(Step('scp-zipped-eval-dir', call, [ 'scp', '-r', '%s:%s-eval.tar.bz2' % (SCP_LOGIN, remote_exppath), '%s-eval.tar.bz2' % local_exppath])) # Copy the zipped experiment directory to local directory self.add_step(Step('scp-exp-dir', call, [ 'scp', '-r', '%s:%s.tar.bz2' % (SCP_LOGIN, remote_exppath), '%s.tar.bz2' % local_exppath])) # Unzip the experiment directory self.add_step(Step.unzip_exp_dir(self)) self.add_step(Step('unzip-eval-dir', call, ['tar', '-xjf', self.name + '-eval.tar.bz2'], cwd=os.path.dirname(self.path)))
from lab.environments import LocalEnvironment from downward.experiment import DownwardExperiment from downward.reports.absolute import AbsoluteReport from downward.reports.hstar_2_h_stat import HstarToHRatioAndStatistics from downward import suites from downward.reports.MyPlot import ProblemPlotReport EXPPATH = 'exp-lmcut-240514' REPO = os.path.expanduser('~/downward') ENV = LocalEnvironment(processes=8) CONFIGS = [('lmcut', ['--search', 'astar(lmcut())'])] ATTRIBUTES = ['coverage', 'expansions','initial_h_value','cost','hstar_to_h','statistics','commualtive_hstar_to_h'] exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV, limits={'search_time': 3000}) exp.add_suite(suites.suite_unit_costs()) for nick, config in CONFIGS: exp.add_config(nick, config) # Make a report containing absolute numbers (this is the most common report). report = os.path.join(exp.eval_dir, 'report_test.html') exp.add_report(HstarToHRatioAndStatistics(attributes=ATTRIBUTES), outfile=report) # Test Plot - TODO exp.add_step(Step('report-plot-cat', ProblemPlotReport(), exp.eval_dir, os.path.join(exp.eval_dir, 'plots'))) # "Publish" the results with "cat" for demonstration purposes. exp.add_step(Step('publish-report', subprocess.call, ['cat', report]))
os.environ["weight"], os.environ["delta"], os.environ["epsilon"], os.environ["is_lower_bound_pac"], os.environ["is_open_based_pac"]) # print tmp # print 'exiting...' # sys.exit(0) # print 'didnt succeed....' CONFIGS = [('lmcut', ['--search', tmp])] ATTRIBUTES = [ 'coverage', 'expansions', 'initial_h_value', 'cost', 'hstar_to_h', 'statistics', 'commualtive_hstar_to_h' ] exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV, limits={'search_time': 300}) #exp.add_suite({'freecell:pfile5'}) #exp.add_suite({'grid:prob_grid_29982290.pddl','grid:prob_grid_58992290.pddl','grid:prob_grid_0101192290.pddl'}) #exp.add_suite({'grid:prob_grid_29982290.pddl'}) #exp.add_suite({'grid','ferry','logistics'}) # exp.add_suite({'blocks'}) # exp.add_suite({'blocks:probBLOCKS-8-0.pddl','blocks:probBLOCKS-8-1.pddl','blocks:probBLOCKS-9-0.pddl','blocks:probBLOCKS-9-1.pddl', 'blocks:probBLOCKS-11-1.pddl'}) exp.add_suite({'blocks:probBLOCKS-9-0.pddl'}) # exp.add_suite({'airport'}) for nick, config in CONFIGS: exp.add_config(nick, config) # Make a report containing absolute numbers (this is the most common report).
EXPPATH = 'exp-lmcut-no-timeout' REPO = os.path.expanduser('~/downward') #Run with 6 processes ENV = LocalEnvironment(processes=6) CONFIGS = [('lmcut', ['--search', 'astar(lmcut())'])] ATTRIBUTES = [ 'coverage', 'expansions', 'initial_h_value', 'cost', 'hstar_to_h' ] #All with timeout #exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV, limits={'search_time': 100}) #exp.add_suite(suites.suite_all()) #Only lmcut domains without timeout exp = DownwardExperiment(path=EXPPATH, repo=REPO, environment=ENV) exp.add_suite(suites.suite_lmcut_domains()) for nick, config in CONFIGS: exp.add_config(nick, config) # Make a report containing absolute numbers with h*/h values. report = os.path.join(exp.eval_dir, 'report.html') exp.add_report(HstarToHRatio(attributes=ATTRIBUTES), outfile=report) # "Publish" the results with "cat" for demonstration purposes. exp.add_step(Step('publish-report', subprocess.call, ['cat', report])) # Compress the experiment directory. exp.add_step(Step.zip_exp_dir(exp))
def __init__(self, path, repo, opt_or_sat, rev, base_rev=None, use_core_configs=True, use_ipc_configs=True, use_extended_configs=False, **kwargs): """ See :py:class:`DownwardExperiment <downward.experiments.DownwardExperiment>` for inherited parameters. The experiment will be built at *path*. *repo* must be the path to a Fast Downward repository. This repository is used to search for problem files. If *opt_or_sat* is 'opt', configurations for optimal planning will be tested on all domains suited for optimal planning. If it is 'sat', configurations for satisficing planning will be tested on the satisficing suite. *rev* determines the new revision to test. If *base_rev* is None (default), the latest revision on the branch default that is an ancestor of *rev* will be used. *use_core_configs* determines if the most common configurations are tested (default: True). *use_ipc_configs* determines if the configurations used in the IPCs are tested (default: True). *use_extended_configs* determines if some less common configurations are tested (default: False). """ base_rev = checkouts.get_common_ancestor(repo, rev) combos = [(Translator(repo, rev=r), Preprocessor(repo, rev=r), Planner(repo, rev=r)) for r in (base_rev, rev)] DownwardExperiment.__init__(self, path, repo, combinations=combos, **kwargs) # ------ suites and configs ------------------------------------ if opt_or_sat == 'opt': self.add_suite(suite_optimal_with_ipc11()) configs = default_configs_optimal(use_core_configs, use_ipc_configs, use_extended_configs) elif opt_or_sat == 'sat': self.add_suite(suite_satisficing_with_ipc11()) configs = default_configs_satisficing(use_core_configs, use_ipc_configs, use_extended_configs) else: logging.critical('Select to test either \'opt\' or \'sat\' configurations') for nick, command in configs.items(): self.add_config(nick, command) # ------ reports ----------------------------------------------- comparison = CompareRevisionsReport(base_rev, rev, attributes=COMPARED_ATTRIBUTES) self.add_report(comparison, name='report-compare-scores', outfile='report-compare-scores.html') for nick in configs.keys(): config_before = '%s-%s' % (base_rev, nick) config_after = '%s-%s' % (rev, nick) for attribute in SCATTER_PLOT_ATTRIBUTES: name = 'scatter-%s-%s' % (attribute, nick) self.add_report( ScatterPlotReport( filter_config=[config_before, config_after], attributes=[attribute], get_category=lambda run1, run2: run1['domain']), outfile=name)