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)
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: