8 name =
"minimal_example"
17 cost = (1 - x) ** 2 + p * (y - x ** 2) ** 2
19 constraint_g_cubic = (x - 1) ** 3 - y + 1
20 constraint_g_linear = x + y - 2
25 cost_function = cs.Function(
"f", [X, p], [cost])
26 g = cs.vertcat(constraint_g_cubic, constraint_g_linear)
27 g_function = cs.Function(
"g", [X, p], [g])
33 cgen, n, m, num_p = pa.generate_casadi_problem(cost_function, g_function, name=name)
37 prob = pa.compile_and_load_problem(cgen, n, m, num_p, name)
39 prob.C.lowerbound = np.array([-1.5, -0.5])
40 prob.C.upperbound = np.array([1.5, 2.5])
41 prob.D.lowerbound = np.array([-np.inf, -np.inf])
42 prob.D.upperbound = np.array([0, 0])
53 prob.param = np.array([100.0])
56 x_sol = np.array([1.0, 2.0])
57 y_sol = np.zeros((m,))
60 x_sol, y_sol, stats =
solver(prob, x_sol, y_sol)
63 print(stats[
"status"])
65 print(f
"Obtained solution: {x_sol}")
66 print(f
"Analytical solution: {(1., 1.)}")
70 import matplotlib.pyplot
as plt
72 x = np.linspace(-1.5, 1.5, 200)
73 y = np.linspace(-0.5, 2.5, 200)
74 X, Y = np.meshgrid(x, y)
75 Z = (1 - X) ** 2 + 100 * (Y - X ** 2) ** 2
83 plt.scatter(1, 1, color=
"tab:red", label=
"Analytic")
84 plt.scatter(x_sol[0], x_sol[1], marker=
"x", color=
"tab:green", label=
"PANOC-ALM")