- #1
kalish1
- 99
- 0
Motivation:
I am working with a code that minimizes the objective functional value in an optimal control problem. It takes $A_1,A_2,A_3,A_4$ (the balancing factors for various components of the objective functional) as inputs, and then outputs the values of the state variables, control functions, and adjoint functions as solutions.
Method:
The algorithm can be summarized as follows:
Here, $\vec{x} = (x_1, \ldots, x_8)$ and $\vec{\kappa} = (\kappa_1, \ldots, \kappa_8)$ denote the vector approximations for the states and adjoints.
1. Make initial guesses for $u_1,u_2$ over the interval $[0,t_f].$ Store the guesses as $u_1,u_2.$
2. Using the initial condition $x_1 = x(0) = a$ and the stored values for $u_1,u_2,$ solve $\vec{x}$ forward in time (using a $4$th-order Runge-Kutta scheme) according to its system of differential equations in the optimality system.
3. Using the transversality condition $\kappa_8 = \kappa(t_f) = 0$ and the stored values for $u_1,u_2,\vec{x},$ solve $\vec{\kappa}$ backward in time (using the same scheme as in 2) according to its system of differential equations in the optimality system.
4. Update $u_1,u_2$ by entering the new $\vec{x}$ and $\vec{\kappa}$ values into the characterization of the optimal controls.
5. Check convergence. If either the relative error between all state variables, the adjoint functions, and the control functions is less than a fixed $\delta$ or the number of iterations of the procedure exceeds a fixed $k^*,$ output the current values of the state variables and adjoint/control functions as solutions. Otherwise return to 2.----------
Question:
Is there a robust procedure to find reasonable ranges of $A_1,A_2,A_3,A_4$ such that the code converges? And values for which the code fails to converge?
I could brute-force the casework, but that is not ideal.
Thanks in advance for any help. Please let me know if excerpts of the code are necessary.
I am working with a code that minimizes the objective functional value in an optimal control problem. It takes $A_1,A_2,A_3,A_4$ (the balancing factors for various components of the objective functional) as inputs, and then outputs the values of the state variables, control functions, and adjoint functions as solutions.
Method:
The algorithm can be summarized as follows:
Here, $\vec{x} = (x_1, \ldots, x_8)$ and $\vec{\kappa} = (\kappa_1, \ldots, \kappa_8)$ denote the vector approximations for the states and adjoints.
1. Make initial guesses for $u_1,u_2$ over the interval $[0,t_f].$ Store the guesses as $u_1,u_2.$
2. Using the initial condition $x_1 = x(0) = a$ and the stored values for $u_1,u_2,$ solve $\vec{x}$ forward in time (using a $4$th-order Runge-Kutta scheme) according to its system of differential equations in the optimality system.
3. Using the transversality condition $\kappa_8 = \kappa(t_f) = 0$ and the stored values for $u_1,u_2,\vec{x},$ solve $\vec{\kappa}$ backward in time (using the same scheme as in 2) according to its system of differential equations in the optimality system.
4. Update $u_1,u_2$ by entering the new $\vec{x}$ and $\vec{\kappa}$ values into the characterization of the optimal controls.
5. Check convergence. If either the relative error between all state variables, the adjoint functions, and the control functions is less than a fixed $\delta$ or the number of iterations of the procedure exceeds a fixed $k^*,$ output the current values of the state variables and adjoint/control functions as solutions. Otherwise return to 2.----------
Question:
Is there a robust procedure to find reasonable ranges of $A_1,A_2,A_3,A_4$ such that the code converges? And values for which the code fails to converge?
I could brute-force the casework, but that is not ideal.
Thanks in advance for any help. Please let me know if excerpts of the code are necessary.
Last edited: