Beispiel #1
0
    def task(self):
        """
        Return a preconfigured OptTask which can be inserted into a workflow.
        Make sure to run .configure before using this task, otherwise your
        workflow optimization might not work!

        Returns:
            OptTask: An OptTask object.
        """
        if self.is_configured:
            return OptTask(launchpad=self.launchpad, opt_label=self.opt_label)
        else:
            self.logger.warn("OptTask created before configuration. Did you"
                             "run MissionControl.configure(...)?")
Beispiel #2
0
def wf_creator_complex(x, launchpad):
    """
    Testing a custom workflow of five fireworks with complex dependencies, and
    optimization in the middle.
    This "complex" Workflow has the form:
                    fw0
                    / \
                  fw1 fw2
                   \  /
                   fw3 (optimization)
                    |
                   fw4
                    |
                   fw5
    """

    spec = {'_x_opt': x}
    dims = [(1, 10), (10.0, 20.0), ['blue', 'green', 'red', 'orange']]
    fw0 = Firework(AdditionTask(), spec={"input_array": [1, 2]}, name='Parent')
    fw1 = Firework(AdditionTask(),
                   spec={"input_array": [2, 3]},
                   name='Child A')
    fw2 = Firework(AdditionTask(),
                   spec={"input_array": [3, 4]},
                   name='Child B')

    bt = BasicTestTask()
    ot = OptTask(wf_creator='rocketsled.tests.tests.wf_creator_complex',
                 dimensions=dims,
                 lpad=launchpad,
                 wf_creator_args=[launchpad],
                 opt_label='test_complex')
    fw3 = Firework([bt, ot], spec=spec, name="Optimization")

    fw4 = Firework(AdditionTask(),
                   spec={"input_array": [5, 6]},
                   name='After 1')
    fw5 = Firework(ScriptTask.from_str('echo "ScriptTask: Finished complex '
                                       'workflow w/ optimization."'),
                   name='After 2')

    return Workflow([fw0, fw1, fw2, fw3, fw4, fw5], {
        fw0: [fw1, fw2],
        fw1: [fw3],
        fw2: [fw3],
        fw3: [fw4],
        fw4: [fw5],
        fw5: []
    })
Beispiel #3
0
def wf_custom_predictor(x, launchpad):
    """
    Testing a custom predictor which returns the same x vector for every guess,
    using same workflow as test_basic.
    """
    spec = {'_x_opt': x}
    dims = [(1, 10), (10.0, 20.0), ['blue', 'green', 'red', 'orange']]
    bt = BasicTestTask()
    ot = OptTask(wf_creator='rocketsled.tests.tests.wf_custom_predictor',
                 dimensions=dims,
                 predictor='rocketsled.tests.tests.custom_predictor',
                 lpad=launchpad,
                 wf_creator_args=[launchpad],
                 opt_label='test_custom_predictor')
    firework1 = Firework([bt, ot], spec=spec)
    return Workflow([firework1])
Beispiel #4
0
def wf_creator_parallel(x, launchpad):
    """
    An expensive test ensuring the database is locked and released
    correctly during optimization.
    """
    spec = {'_x_opt': x}
    dims = [(1, 5), (1, 5), (1, 5)]
    at = AccuracyTask()
    ot = OptTask(wf_creator='rocketsled.tests.tests.wf_creator_parallel',
                 dimensions=dims,
                 lpad=launchpad,
                 wf_creator_args=[launchpad],
                 opt_label='test_parallel',
                 maximize=True)
    firework1 = Firework([at, ot], spec=spec)
    return Workflow([firework1])
Beispiel #5
0
def wf_creator_accuracy(x, launchpad):
    """
    An expensive test ensuring the default predictor actually performs better
    than the average random case on the function defined in AccuracyTask.
    """
    spec = {'_x_opt': x}
    dims = [(1, 10), (10.0, 20.0), (20.0, 30.0)]
    at = AccuracyTask()
    ot = OptTask(wf_creator='rocketsled.tests.tests.wf_creator_accuracy',
                 dimensions=dims,
                 lpad=launchpad,
                 wf_creator_args=[launchpad],
                 opt_label='test_accuracy',
                 maximize=True)
    firework1 = Firework([at, ot], spec=spec)
    return Workflow([firework1])
Beispiel #6
0
def wf_creator_basic(x, launchpad):
    """
    Testing a basic workflow with one Firework, and two FireTasks.
    """

    spec = {'_x_opt': x}
    dims = [(1, 10), (10.0, 20.0), ['blue', 'green', 'red', 'orange']]
    bt = BasicTestTask()
    ot = OptTask(wf_creator='rocketsled.tests.tests.wf_creator_basic',
                 dimensions=dims,
                 predictor='RandomForestRegressor',
                 predictor_kwargs={'random_state': 1},
                 lpad=launchpad,
                 wf_creator_args=[launchpad],
                 opt_label='test_basic')
    firework1 = Firework([bt, ot], spec=spec)
    return Workflow([firework1])
Beispiel #7
0
def wf_creator_multiobjective(x, launchpad):
    """
    Testing a multiobjective optimization.
    """

    spec = {'_x_opt': x}
    dims = [(1, 10), (10.0, 20.0), ['blue', 'green', 'red', 'orange']]
    mt = MultiTestTask()
    ot = OptTask(wf_creator='rocketsled.tests.tests.wf_creator_multiobjective',
                 dimensions=dims,
                 predictor='RandomForestRegressor',
                 predictor_kwargs={'random_state': 1},
                 lpad=launchpad,
                 wf_creator_args=[launchpad],
                 opt_label='test_multi')
    firework1 = Firework([mt, ot], spec=spec)
    return Workflow([firework1])
Beispiel #8
0
def wf_creator_duplicates(x, launchpad):
    """
    Test workflow for duplicate checking with tolerances.
    """
    spec = {'_x_opt': x}
    dims = [(1, 10), (10.0, 20.0), ['blue', 'green', 'red', 'orange']]
    bt = BasicTestTask()
    ot = OptTask(wf_creator='rocketsled.tests.tests.wf_creator_duplicates',
                 dimensions=dims,
                 predictor='rocketsled.tests.tests.custom_predictor',
                 lpad=launchpad,
                 duplicate_check=True,
                 tolerances=[0, 1e-6, None],
                 wf_creator_args=[launchpad],
                 opt_label='test_duplicates')
    firework1 = Firework([bt, ot], spec=spec)
    return Workflow([firework1])
Beispiel #9
0
def wf_creator_get_z(x, launchpad):
    """
    Testing a basic workflow with one Firework, and two FireTasks with a get_z
    function. Also tests that duplicate checking is working with get_z.
    """
    spec = {'_x_opt': x}
    dims = [(1, 10), (10.0, 20.0), ['blue', 'green', 'red', 'orange']]
    bt = BasicTestTask()
    ot = OptTask(wf_creator='rocketsled.tests.tests.wf_creator_get_z',
                 dimensions=dims,
                 predictor='rocketsled.tests.tests.custom_predictor',
                 lpad=launchpad,
                 duplicate_check=True,
                 tolerances=[0, 1e-6, None],
                 get_z='rocketsled.tests.tests.get_z',
                 wf_creator_args=[launchpad],
                 opt_label='test_get_z')
    firework1 = Firework([bt, ot], spec=spec)
    return Workflow([firework1])