def configure(self):

        driver = self.add('driver', FixedPointIterator())
        adapt = self.add('adapt', AdaptiveSampleDriver())
        MOEI_opt = self.add('MOEI_opt', Genetic())

        self.add('spiral', SpiralComponent())

        kwargs = {'params':("x", "y"),
                  'responses':('f1_xy', 'f2_xy')}

        meta = self.add('meta', MetaModel(**kwargs))
        meta.default_surrogate = KrigingSurrogate()
        self.add('pareto', ParetoFilter(**kwargs))

        self.add('MOEI', MultiObjExpectedImprovement())

        #initial training DOE
        adapt.DOEgenerator = OptLatinHypercube(num_samples=25)
        adapt.add_parameter('spiral.x')
        adapt.add_parameter('spiral.y')
        adapt.add_response('spiral.f1_xy')
        adapt.add_response('spiral.f2_xy')

        #pass training data from sampler to metamodel and pareto filter
        self.connect('adapt.all_case_inputs.spiral.x', ['meta.params.x',
                                                        'pareto.params.x'])
        self.connect('adapt.all_case_inputs.spiral.y', ['meta.params.y',
                                                        'pareto.params.y'])
        self.connect('adapt.all_case_outputs.spiral.f1_xy', ['meta.responses.f1_xy',
                                                            'pareto.responses.f1_xy'])
        self.connect('adapt.all_case_outputs.spiral.f2_xy', ['meta.responses.f2_xy',
                                                            'pareto.responses.f2_xy'])

        #connect meta and pareto to ei
        self.connect('[meta.f1_xy, meta.f2_xy]', 'MOEI.current')
        self.connect('pareto.pareto_outputs', 'MOEI.target')

        # MOEI optimization to find next point
        MOEI_opt.opt_type = "maximize"
        MOEI_opt.population_size = 100
        MOEI_opt.generations = 10
        #MOEI_opt.selection_method = "tournament"
        MOEI_opt.add_parameter("meta.x", low=0.75, high=5.*pi)
        MOEI_opt.add_parameter("meta.y", low=0.75, high=5.*pi)
        MOEI_opt.add_objective("MOEI.PI")

        #Iterative sampling process
        driver.add_parameter('adapt.adaptive_inputs.spiral.x[0]')
        driver.add_parameter('adapt.adaptive_inputs.spiral.y[0]')
        driver.add_constraint('adapt.adaptive_inputs.spiral.x[0] = meta.x')
        driver.add_constraint('adapt.adaptive_inputs.spiral.y[0] = meta.y')
        driver.max_iterations = 30

        #Iteration Heirarchy
        driver.workflow.add(['adapt', 'pareto', 'MOEI_opt'])
        adapt.workflow.add(['spiral'])
        MOEI_opt.workflow.add(['meta', 'MOEI'])

        #FPI now support stop conditions
        driver.add_stop_condition('MOEI.PI <= .0001')
dataset/ETHPy150Open OpenMDAO/OpenMDAO-Framework/examples/openmdao.examples.expected_improvement/openmdao/examples/expected_improvement/multi_objective_ei.py/Analysis.configure/original