def setUp(self): if SKIP: raise unittest.SkipTest('Could not import pyOptSparseDriver. Is pyoptsparse installed?') prob = Problem(impl=impl) root = prob.root = Group() #root.ln_solver = lin_solver() root.ln_solver = LinearGaussSeidel() par = root.add('par', ParallelGroup()) par.ln_solver = LinearGaussSeidel() ser1 = par.add('ser1', Group()) ser1.ln_solver = LinearGaussSeidel() ser1.add('p1', IndepVarComp('x', np.zeros([2]))) ser1.add('comp', SimpleArrayComp()) ser1.add('con', ExecComp('c = y - 20.0', c=np.array([0.0, 0.0]), y=np.array([0.0, 0.0]))) ser1.add('obj', ExecComp('o = y[0]', y=np.array([0.0, 0.0]))) ser2 = par.add('ser2', Group()) ser2.ln_solver = LinearGaussSeidel() ser2.add('p1', IndepVarComp('x', np.zeros([2]))) ser2.add('comp', SimpleArrayComp()) ser2.add('con', ExecComp('c = y - 30.0', c=np.array([0.0, 0.0]), y=np.array([0.0, 0.0]))) ser2.add('obj', ExecComp('o = y[0]', y=np.array([0.0, 0.0]))) root.add('total', ExecComp('obj = x1 + x2')) ser1.connect('p1.x', 'comp.x') ser1.connect('comp.y', 'con.y') ser1.connect('comp.y', 'obj.y') root.connect('par.ser1.obj.o', 'total.x1') ser2.connect('p1.x', 'comp.x') ser2.connect('comp.y', 'con.y') ser2.connect('comp.y', 'obj.y') root.connect('par.ser2.obj.o', 'total.x2') prob.driver = pyOptSparseDriver() prob.driver.add_desvar('par.ser1.p1.x', low=-50.0, high=50.0) prob.driver.add_desvar('par.ser2.p1.x', low=-50.0, high=50.0) prob.driver.add_objective('total.obj') prob.driver.add_constraint('par.ser1.con.c', equals=0.0) prob.driver.add_constraint('par.ser2.con.c', equals=0.0) self.prob = prob
def openmdao_sellar_converged(): from openmdao.core import Problem from openmdao.drivers import ScipyOptimizer top = Problem() top.root = SellarDerivatives() top.driver = ScipyOptimizer() top.driver.options['optimizer'] = 'SLSQP' top.driver.options['tol'] = 1.0e-8 top.driver.options['disp'] = False top.driver.add_desvar('z', low=np.array([-10.0, 0.0]), high=np.array([10.0, 10.0])) top.driver.add_desvar('x', low=0.0, high=10.0) top.driver.add_objective('obj') top.driver.add_constraint('con1', upper=0.0) top.driver.add_constraint('con2', upper=0.0) top.setup(check=False) top.run() return top