Closed Loop Control for a Sliding Mass System

rem: Closed Loop Control for a Sliding Mass System

Find \(u\) over \(t \in [0,t_f]\) to minimize \[ J = \int_0^{t_f} (y_1^2 + y_2^2 + u^2) \ \mathrm{d}t \] subject to: \[ \dot{y}_1 = y_2 \\ \dot{y}_2 = u - y_2 |y_2| \\ y_1(0) = 2, \ \ y_2(0) = -2 \]

par:	# declare parameters: here the final time
  tf = 1

dyn:	# declare the dynamic variables
  y{1:2}
  J u

t=t0:	# set the initial conditions
  y{1:2} = {2 -2}
  J = 0

equ:	# define the equations
  y1´ == y2	# character ´ (hexadecimal B4, decimal 180) denotes the derivative
  y2´ == u - y2*y2*sign(y2)
  J´ == 0.5 * (sqr(y1) + sqr(y2) + sqr(u))

obj:	# set the objective and select the solver to use (in this case a discontinuous NLP solver)
  minimize final(J) using dnlp