|
11 | 11 | import numpy as np
|
12 | 12 | import matplotlib.pyplot as plt
|
13 | 13 | import scipy.linalg
|
14 |
| - |
15 |
| -from cvxopt import matrix |
16 |
| -import cvxopt |
| 14 | +import pyecosqp |
17 | 15 |
|
18 | 16 | DEBUG_ = False
|
19 | 17 |
|
@@ -132,7 +130,7 @@ def generate_x_constraints_mat(G, h, N, nx, u0, theta, kappa, minx, maxx):
|
132 | 130 | tG[0, -1] = -1.0
|
133 | 131 | cG = np.vstack([cG, tG])
|
134 | 132 |
|
135 |
| - print(cG) |
| 133 | + # print(cG) |
136 | 134 |
|
137 | 135 | tau = cG[:, :-1]
|
138 | 136 | g = cG[:, -1]
|
@@ -180,15 +178,15 @@ def model_predictive_control(A, B, N, Q, R, T, x0, u0, mindu=None, maxdu=None, m
|
180 | 178 | kappa = psi * x0 + gamma * u0
|
181 | 179 | G, h = generate_x_constraints_mat(G, h, N, nx, u0, theta, kappa, minx, maxx)
|
182 | 180 |
|
183 |
| - P = matrix(H) |
184 |
| - q = matrix(g) |
185 |
| - G = matrix(G) |
186 |
| - h = matrix(h) |
187 |
| - sol = cvxopt.solvers.qp(P, q, G, h) |
| 181 | + # print(H) |
| 182 | + # print(g) |
| 183 | + # print(G) |
| 184 | + # print(h) |
| 185 | + |
| 186 | + sol = pyecosqp.ecosqp(H, g, A=G, B=h) |
| 187 | + du = np.matrix(sol["x"]).T |
188 | 188 |
|
189 |
| - du = np.matrix(sol["x"]) |
190 | 189 | # print(du)
|
191 |
| - # print(len(du)) |
192 | 190 |
|
193 | 191 | fx = psi * x0 + gamma * u0 + theta * du
|
194 | 192 |
|
@@ -244,6 +242,7 @@ def test1():
|
244 | 242 |
|
245 | 243 | target = T.reshape(N, nx)
|
246 | 244 | for ii in range(len(x[0, :]) + 1):
|
| 245 | + # print(x[-1, ii] - target[-1, ii]) |
247 | 246 | assert abs(x[-1, ii] - target[-1, ii]) <= 0.3, "Error"
|
248 | 247 |
|
249 | 248 |
|
@@ -782,7 +781,7 @@ def test12():
|
782 | 781 | mindu = -0.5
|
783 | 782 | maxdu = 0.5
|
784 | 783 |
|
785 |
| - x, u, du = model_predictive_control(A, B, N, Q, R, T, x0, u0, maxx=maxx, minx=minx, maxdu=maxdu, mindu=mindu) |
| 784 | + x, u, du = model_predictive_control(A, B, N, Q, R, T, x0, u0, mindu=mindu, maxdu=maxdu, maxx=maxx, minx=minx) |
786 | 785 |
|
787 | 786 | # test
|
788 | 787 | tx = x0
|
|
0 commit comments