Example #1
0
    def test_run_optimum_within_bounds(self):
        generator = PipelineGenerator(self.config_with_optimum(15, 3))

        designer = generator.new_designer_from_config(
            model_selection='manual', manual_formula=self.full_formula)
        design = designer.new_design()
        pipeline = generator.new_pipeline_collection(design)

        cmd = '{script}'
        executor = self.__class__.executor(workdir=self.work_dir,
                                           base_command=cmd)
        results = executor.run_pipeline_collection(pipeline)
        optimum = designer.update_factors_from_response(results)

        expected_optimum = {'FactorA': 15, 'FactorB': 3}
        self.assertTrue(optimum.converged)
        for factor in design.columns:
            self.assertTrue(
                np.isclose(optimum.predicted_optimum[factor],
                           expected_optimum[factor]))
Example #2
0
    def test_screening_finds_optimum_at_origin(self):
        generator = PipelineGenerator(self.config_with_optimum(0, 0))
        designer = generator.new_designer_from_config(
            skip_screening=False,
            model_selection='manual',
            manual_formula=self.full_formula)
        design = designer.new_design()
        pipeline = generator.new_pipeline_collection(design)

        cmd = '{script}'
        executor = self.__class__.executor(workdir=self.work_dir,
                                           base_command=cmd)
        results = executor.run_pipeline_collection(pipeline)
        optimum = designer.update_factors_from_response(results)

        self.assertEqual(designer._phase, 'optimization')
        self.assertFalse(optimum.converged)
        expected_optimum = {'FactorA': 0, 'FactorB': 0}
        for factor in design.columns:
            self.assertTrue(
                np.isclose(optimum.predicted_optimum[factor],
                           expected_optimum[factor]))
Example #3
0
    def test_run_optimum_outside_bounds(self):
        generator = PipelineGenerator(self.config_with_optimum(5, 5))

        designer = generator.new_designer_from_config(
            model_selection='manual', manual_formula=self.full_formula)
        design = designer.new_design()
        pipeline = generator.new_pipeline_collection(design)

        cmd = '{script}'
        executor = self.__class__.executor(workdir=self.work_dir,
                                           base_command=cmd)
        results = executor.run_pipeline_collection(pipeline)
        optimum = designer.update_factors_from_response(results)

        expected_optimum = {'FactorA': 5, 'FactorB': 5}
        self.assertFalse(optimum.converged)
        for factor in design.columns:
            # Optimum is outside of bounds and optimization should be
            # constrained to be inside design space. So the expected
            # optimum should not have been predicted after a single
            # iteration.
            self.assertFalse(
                np.isclose(optimum.predicted_optimum[factor],
                           expected_optimum[factor]))