The model consist of three different types of variables:

concentrated state and control variables (depending on time $t$)

distributed state and control variables (depending on time $t$ and vintage $s$)

aggregated state variables (depending on time $t$)

Concentrated variables

The concentrated variables consist of the $n_1$-dimensional control variable $C_1$ and the $m_1$-dimensional state variable $S_1$. The initial value of $S_1$ is given by $S_1^0$ and its dynamics are affected by $C_1$. Furthermore $C_1$ also affects the initial values of the distributed variables (see below).

Distributed variables

Analogous to the concentrated variables, the distributed variables consist of the $n_2$-dimensional control variable $C_2$ and the $m_2$-dimensional state variable $S_2$. The strictly speaking partial differential equation can be solved along the characteristic lines with fixed vintage $s=\overline{s}$. While the dynamics of $S_2$ are again affected by the distributed controls $C_2$, the initial values of $S_2$ at the beginning of each vintage $s$ are determined by the value of the concentrated state $S_1$ at time $s$ and the concentrated control $C_1$.

Aggregated variables

Finally we also have an aggregated variable $Q$ which aggregates at each point in time $t$ a functional form $F_2$ over all vintages which startet before $t$.

Algorithm principles

The algorithm uses a gradient based approach following a sequence of steps:

Start with a given guess for the optimal solution of the control variables.

Calculate the corresponding profiles of the state variables and co-state variables (based on the maximum principle)

Calculate the gradient based on the Hamiltonian.

Adjust the guess for the control in the direction of the gradient.

Find the optimal adjustment step in the direction of the gradient.

Define new currently best solution.

Iterate from step 2 until no improvement can be found anymore.

Two-stage optimal control problems with random switching time

This package is based on a project about the solution of two-stage optimal control problems with random switching time. This problem class takes the following form:

and $\tau$ being the random switching time between the two stages with the stochastic properties being best described by the $Z(t):= \mathbb{P}\left[\tau > t\right]$, the probability of surviving in the first stage. The hazard rate $\eta$ of $Z$ thereby can depend on time $t$ the state variables $S_1$ and the control variablee $C_1$.

$$
\dot{Z}(t) = -\eta(t,C_1,S_1)\cdot Z(t)
$$

Overall this problem type can be transformed into a vintage-structed optimal control problem presented above. For details see the work of Wrzaczek, Kuhn and Frankovic (2020).

Planned extensions of the toolbox

1. Generalise to the age-structured optimal control problems with initial distribution of state variables, intial and boundary controls, and more generalised version of aggregated variables.

2. Allow for more general/complicated feasible regions for the control variables.

3. Include the option to define equilibrium conditions, which the solution has to fulfill.

This website serves as a package browsing tool for the Julia programming language. It works by aggregating various sources on Github to help you find your next package.