solvers/ipopt.py

This example looks at a use for the NLP solvers

View output (PDF) | source (python)

See also
Function object.
Definition: function.hpp:60
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 from casadi import *
28 from numpy import *
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 x=SX.sym('x')
40 nlp = {'x':x, 'f':(x-1)**2}
41 
42 solver = nlpsol('solver', 'ipopt', nlp)
43 sol = solver(lbx=-10, ubx=10)
44 
45 
46 
47 print(sol['x'])
48 assert(abs(sol['x']-1)<1e-9)
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 n = 5
60 
61 x=SX.sym('x',n)
62 
63 
64 
65 nlp = {'x':x, 'f':mtimes((x-1).T,x-1), 'g':vertcat(x[1]+x[2],x[0])}
66 
67 solver = nlpsol('solver', 'ipopt', nlp)
68 sol = solver(lbx=-10, ubx=10, lbg=[0,2], ubg=[1,2])
69 
70 
71 
72 
73 
74 
75 print(sol['x'])
76 for (i,e) in zip(list(range(n)),[2,0.5,0.5,1,1]):
77  assert(abs(sol['x'][i]-e)<1e-7)
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 x=SX.sym('x')
88 a=SX.sym('a')
89 a_ = 2
90 nlp={'x':x, 'p':a, 'f':(x-a)**2}
91 
92 solver = nlpsol('solver', 'ipopt', nlp)
93 sol = solver(lbx=-10, ubx=10, p=a_)
94 
95 
96 
97 print(sol['x'])
98 assert(abs(sol['x']-a_)<1e-9)
99 
100 
101 
102 sol = solver(lbx=-10, ubx=10, p=2*a_)
103 
104 
105 
106 print(sol['x'])
107 assert(abs(sol['x']-2*a_)<1e-9)
CASADI_EXPORT Function nlpsol(const std::string &name, const std::string &solver, const SXDict &nlp, const Dict &opts=Dict())