예제 #1
0
    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)
예제 #2
0
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()
예제 #3
0
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()