# Van der Pol Oscillator

Van der Pol Oscillator | |
---|---|

State dimension: | 1 |

Differential states: | 2 |

Continuous control functions: | 1 |

Path constraints: | 1 |

Interior point equalities: | 2 |

The Van der Pol Oscillator is an oscillating system with non-linear damping and self regulation. The System was first introduced by the Dutch physician Balthasar Van der Pol in 1927. The aim is to control the oscillation such that the system stays in a mean position.

## Contents

## Model formulation

The Van der Pol Oscillator evolves over time according to the second order differential equation:

where is the position coordinate, which is a function of the time , and is a scalar parameter indicating the non-linearity and the strength of the damping.

For the oscillator is being damped, whereas for energy is added to the system.

Based on the transformation the problem can be reformulated:

The Optimal Control Problem arises by adding the objective function:

## Optimal Control Problem

The Optimal Control Problem with the aim to minimize the deflection can be formulated as follows:

## Parameters

These fixed values are used within the model:

## Reference Solution

The following reference solution was generated using JModelica with the automatic differentiation tool CasADI and the solver IPOPT. The Optimica code used to solve the problem can be found under Van der Pol Oscillator (JModelica) The optimal value of the objective function is 3.1762.

## Source Code

Model descriptions are available in:

- JModelica code at Van der Pol Oscillator (JModelica)
- JuMP code (of a slightly modified Van der Pol oscillator problem) at Van der Pol Oscillator (Jump)

## Variants

There are several alternative formulations and variants of the above problem, in particular

- a variant where partial outer convexification is applied on the control and the continous control is replaces by binary controls, see also Van der Pol Oscillator (binary variant),

## References

The Problem can be found under the following link or in the JModelica Users Guide.