diff --git a/control/flatsys/flatsys.py b/control/flatsys/flatsys.py index 7d76b9d78..5818d118b 100644 --- a/control/flatsys/flatsys.py +++ b/control/flatsys/flatsys.py @@ -721,8 +721,7 @@ def solve_flat_ocp( # Process final time timepts = np.atleast_1d(timepts) - Tf = timepts[-1] - T0 = timepts[0] if len(timepts) > 1 else T0 + T0 = timepts[0] if len(timepts) > 1 else 0 # Process keyword arguments if trajectory_constraints is None: diff --git a/control/tests/flatsys_test.py b/control/tests/flatsys_test.py index a12bf1480..5b66edaf5 100644 --- a/control/tests/flatsys_test.py +++ b/control/tests/flatsys_test.py @@ -452,6 +452,29 @@ def test_flat_solve_ocp(self, basis): np.testing.assert_almost_equal(x_const, x_nlconst) np.testing.assert_almost_equal(u_const, u_nlconst) + def test_solve_flat_ocp_scalar_timepts(self): + # scalar timepts gives expected result + f = fs.LinearFlatSystem(ct.ss(ct.tf([1],[1,1]))) + + def terminal_cost(x, u): + return (x-5).dot(x-5)+u.dot(u) + + traj1 = fs.solve_flat_ocp(f, [0, 1], x0=[23], + terminal_cost=terminal_cost) + + traj2 = fs.solve_flat_ocp(f, 1, x0=[23], + terminal_cost=terminal_cost) + + teval = np.linspace(0, 1, 101) + + r1 = traj1.response(teval) + r2 = traj2.response(teval) + + np.testing.assert_array_equal(r1.x, r2.x) + np.testing.assert_array_equal(r1.y, r2.y) + np.testing.assert_array_equal(r1.u, r2.u) + + def test_bezier_basis(self): bezier = fs.BezierFamily(4) time = np.linspace(0, 1, 100) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy