def test_optimize_derivs(self): from openmdao.api import Problem, IndepVarComp from openmdao.api import ScipyOptimizeDriver from openmdao.components.tests.test_external_code_comp import ParaboloidExternalCodeCompDerivs prob = Problem() model = prob.model # create and connect inputs model.add_subsystem('p1', IndepVarComp('x', 3.0)) model.add_subsystem('p2', IndepVarComp('y', -4.0)) model.add_subsystem('p', ParaboloidExternalCodeCompDerivs()) model.connect('p1.x', 'p.x') model.connect('p2.y', 'p.y') # find optimal solution with SciPy optimize # solution (minimum): x = 6.6667; y = -7.3333 prob.driver = ScipyOptimizeDriver() prob.driver.options['optimizer'] = 'SLSQP' prob.model.add_design_var('p1.x', lower=-50, upper=50) prob.model.add_design_var('p2.y', lower=-50, upper=50) prob.model.add_objective('p.f_xy') prob.driver.options['tol'] = 1e-9 prob.driver.options['disp'] = True prob.setup() prob.run_driver() assert_rel_error(self, prob['p1.x'], 6.66666667, 1e-6) assert_rel_error(self, prob['p2.y'], -7.3333333, 1e-6)
def test_optimize_derivs(self): import openmdao.api as om from openmdao.components.tests.test_external_code_comp import ParaboloidExternalCodeCompDerivs prob = om.Problem() model = prob.model model.add_subsystem('p', ParaboloidExternalCodeCompDerivs()) # find optimal solution with SciPy optimize # solution (minimum): x = 6.6667; y = -7.3333 prob.driver = om.ScipyOptimizeDriver() prob.driver.options['optimizer'] = 'SLSQP' prob.model.add_design_var('p.x', lower=-50, upper=50) prob.model.add_design_var('p.y', lower=-50, upper=50) prob.model.add_objective('p.f_xy') prob.driver.options['tol'] = 1e-9 prob.driver.options['disp'] = True prob.setup() # Set input values prob.set_val('p.x', 3.0) prob.set_val('p.y', -4.0) prob.run_driver() assert_near_equal(prob.get_val('p.x'), 6.66666667, 1e-6) assert_near_equal(prob.get_val('p.y'), -7.3333333, 1e-6)