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(...)?")
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: [] })
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])
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])
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])
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])
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])
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])
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])