コード例 #1
0
 def test_initialization(self):
     factory = DummyMCOFactory(self.plugin)
     self.assertEqual(factory.id, "pid.factory.dummy_mco")
     self.assertEqual(factory.name, "Dummy MCO")
     self.assertIsInstance(factory.create_optimizer(), DummyMCO)
     self.assertIsInstance(factory.create_communicator(),
                           DummyMCOCommunicator)
     self.assertIsInstance(factory.create_model(), DummyMCOModel)
コード例 #2
0
    def test_base_object_parameter_factories(self):
        factory = DummyMCOFactory(self.plugin)
        self.assertEqual(1, len(factory.parameter_factories))
        for parameter_factory in factory.parameter_factories:
            self.assertIsInstance(parameter_factory, DummyMCOParameterFactory)

        self.assertRaisesRegex(
            KeyError,
            "not a valid id",
            factory.parameter_factory_by_id,
            "not a valid id",
        )
        self.assertIs(
            factory.parameter_factory_by_id(factory.parameter_factories[0].id),
            factory.parameter_factories[0],
        )
コード例 #3
0
    def setUp(self):
        self.plugin = {"id": "pid", "name": "Plugin"}
        self.factory = DummyMCOFactory(self.plugin)
        workflow_file = ProbeWorkflowFile(path=fixtures.get("test_probe.json"))
        workflow_file.read()
        self.workflow = workflow_file.workflow

        self.parameters = [1, 1, 1, 1]
        self.optimizer_engine = DummyOptimizerEngine(
            single_point_evaluator=self.workflow)
コード例 #4
0
    def setUp(self):
        self.plugin = {"id": "pid", "name": "Plugin"}
        self.factory = DummyMCOFactory(self.plugin)
        self.parameters = [
            RangedMCOParameterFactory(self.factory).create_model(
                {
                    "lower_bound": 0.0,
                    "upper_bound": 1.0
                })
        ] * 4

        self.engine = AposterioriOptimizerEngine(
            single_point_evaluator=ProbeEvaluator(),
            optimizer=ProbeOptimizer(),
            parameters=self.parameters)
コード例 #5
0
 def setUp(self):
     self.plugin = {"id": "pid", "name": "Plugin"}
     self.factory = DummyMCOFactory(self.plugin)
     self.parameters = [
         RangedMCOParameterFactory(self.factory).create_model({
             "lower_bound":
             0.0,
             "upper_bound":
             1.0
         }) for _ in range(4)
     ]
     self.kpis = [KPISpecification()] * 2
     self.optimizer = DummyOptimizerEngine(
         kpis=self.kpis,
         parameters=self.parameters,
         single_point_evaluator=GaussProbeEvaluator())
     self.scaling_values = self.optimizer.scaling_values.tolist()
コード例 #6
0
    def test_transfer_parameters(self):

        # create old model
        old_factory = DummyMCOFactory(plugin={'id': 'bcy356', 'name': 'old'})
        old_factory.parameter_factory_classes = [
            RangedVectorMCOParameterFactory, RangedMCOParameterFactory,
            CategoricalMCOParameterFactory
        ]
        old_model = BaseMCOModel(factory=old_factory)
        old_model.parameters = [
            RangedMCOParameter(
                initial_value=1.0,
                factory=RangedVectorMCOParameterFactory(old_factory)),
            RangedVectorMCOParameter(
                initial_value=[1.0, 1.0],
                factory=RangedMCOParameterFactory(old_factory)),
            CategoricalMCOParameter(
                categories=['A', 'B', 'C'],
                factory=CategoricalMCOParameterFactory(old_factory))
        ]
        old_model.kpis = []

        # create new model, that we want to transfer the parameters and
        # kpis to.
        new_factory = DummyMCOFactory(plugin={'id': 'xxui1', 'name': 'new'})
        new_factory.parameter_factory_classes = [
            RangedVectorMCOParameterFactory,
            RangedMCOParameterFactory,
        ]
        new_model = BaseMCOModel(factory=new_factory)

        # workflow tree to work with
        workflow_tree = WorkflowTree(
            model=Workflow(),
            _factory_registry=self.factory_registry,
            system_state=self.system_state,
        )

        # transfer the parameters and kpis
        workflow_tree.transfer_parameters_and_kpis(old_model, new_model)

        # have ONLY two parameters been transferred?
        # (the third categorical parameter of the old_model
        # should not be filtered out as it is not allowed by the new model).
        self.assertEqual(2, len(new_model.parameters))
        for p in new_model.parameters:
            self.assertNotIsInstance(p, CategoricalMCOParameter)

        # has the correct plugin id been transferred?
        self.assertEqual('xxui1',
                         new_model.parameters[0].factory.mco_factory.plugin_id)
コード例 #7
0
    def setUp(self):
        self.plugin = {"id": "pid", "name": "Plugin"}
        self.factory = DummyMCOFactory(self.plugin)

        self.kpis = [KPISpecification(), KPISpecification()]
        self.parameters = [1, 1, 1, 1]

        self.parameters = [
            RangedMCOParameterFactory(self.factory).create_model({
                "lower_bound":
                0.0,
                "upper_bound":
                1.0
            }) for _ in self.parameters
        ]

        self.optimizer = WeightedScipyEngine(parameters=self.parameters,
                                             kpis=self.kpis)
        self.mocked_optimizer = DummyOptimizerEngine(
            parameters=self.parameters,
            kpis=self.kpis,
            single_point_evaluator=GaussProbeEvaluator())
コード例 #8
0
 def setUp(self):
     self.factory = DummyMCOFactory({"id": "pid", "name": "test"})
     self.model = BaseModel(self.factory)
コード例 #9
0
 def _mco_factories_default(self):
     return [DummyMCOFactory(self.plugin)]
コード例 #10
0
    def setUp(self):
        self.optimizer = ScipyOptimizer()

        self.plugin = {"id": "pid", "name": "Plugin"}
        self.factory = DummyMCOFactory(self.plugin)