def test_composite_nlp(self): G = np.array([[6, 2, 1], [2, 5, 2], [1, 2, 4]]) A = np.array([[1, 0, 1], [0, 1, 1]]) b = np.array([3, 0]) c = np.array([-8, -3, -3]) scenarios = dict() coupling_vars = dict() n_scenarios = 2 np.random.seed(seed=985739465) bs = [b, b + 0.001] for i in range(n_scenarios): instance = create_model3(G, A, bs[i], c) nlp = PyomoNLP(instance) scenario_name = "s{}".format(i) scenarios[scenario_name] = nlp coupling_vars[scenario_name] = [nlp.variable_idx(instance.x[0])] nlp = TwoStageStochasticNLP(scenarios, coupling_vars) solver = CyIpoptSolver(nlp) x, info = solver.solve(tee=False) x_sol = np.array([ 2.00003846, -0.99996154, 0.99996154, 2.00003846, -0.99996154, 1.00096154, 2.00003846 ]) self.assertTrue(np.allclose(x, x_sol, rtol=1e-4)) self.assertAlmostEqual(nlp.objective(x), -6.99899, 3)
models = [] scenarios = dict() coupling_vars = dict() n_scenarios = 5 np.random.seed(seed=985739465) bs = [b + np.random.normal(scale=2.0, size=1) for i in range(n_scenarios)] for i in range(n_scenarios): instance = create_basic_dense_qp(G, A, bs[i], c) nlp = PyomoNLP(instance) models.append(instance) scenario_name = "s{}".format(i) scenarios[scenario_name] = nlp coupling_vars[scenario_name] = [nlp.variable_idx(instance.x[0])] nlp = TwoStageStochasticNLP(scenarios, coupling_vars) x = nlp.x_init() y = nlp.y_init() jac_c = nlp.jacobian_c(x) plt.spy(jac_c) plt.title('Jacobian of the constraints\n') plt.show() hess_lag = nlp.hessian_lag(x, y) plt.spy(hess_lag.tocoo()) plt.title('Hessian of the Lagrangian function\n') plt.show()
coupling_vars = dict() n_scenarios = 5 np.random.seed(seed=985739465) bs = [b+np.random.normal(scale=2.0, size=1) for i in range(n_scenarios)] for i in range(n_scenarios): instance = create_basic_dense_qp(G, A, bs[i], c) nlp = PyomoNLP(instance) models.append(instance) scenario_name = "s{}".format(i) scenarios[scenario_name] = nlp coupling_vars[scenario_name] = [nlp.variable_idx(instance.x[0])] nlp = TwoStageStochasticNLP(scenarios, coupling_vars) x = nlp.x_init() y = nlp.y_init() jac_c = nlp.jacobian_c(x) plt.spy(jac_c) plt.title('Jacobian of the constraints\n') plt.show() hess_lag = nlp.hessian_lag(x, y) plt.spy(hess_lag.tocoo()) plt.title('Hessian of the Lagrangian function\n') plt.show()