Jump to content

Ducted Fan: Difference between revisions

From mintOC
Created page with "{{Dimensions |nd = 1 |nx = 4 |nw = 1 }} The '''Ducted Fan problem''' is a classical nonlinear benchmark in optimal control with multiple input and state constraints. This description is taken from [1]. It models the planar motion of a ducted fan aircraft, described by its horizontal and vertical positions <math>( x_1 , x_2 )</math> , the angle <math>\alpha</math> with respect to the vertical, and their velocities <math>( v_1 , v_2 , v_..."
 
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Dimensions
{{Dimensions
|nd        = 1
|nd        = 1
|nx        = 4
|nx        = 6
|nw        = 1
|nw        = 3
}}
}}


Line 10: Line 10:
The inputs are the body-fixed thrust components <math>( u_1 , u_2 )</math> , generated by moving flaps at the end of the duct.
The inputs are the body-fixed thrust components <math>( u_1 , u_2 )</math> , generated by moving flaps at the end of the duct.


The objective is to steer the fan from the origin to a horizontal position of <math>1 \mathrm{m}</math> at altitude 0 , with zero final velocities and attitude, in a free final time t f , while minimising a trade-off between control effort and transition time.
The objective is to steer the fan from the origin to a horizontal position of <math>1 \mathrm{m}</math> at altitude <math>0</math>, with zero final velocities and attitude, in a free final time <math>t_f</math>, while minimising a trade-off between control effort and transition time.


== Mathematical formulation ==
== Mathematical formulation ==
We summarize the states as <math>x := (x_1, v_1, x_2, v_2, \alpha, v_\alpha)</math>.
<p>
<p>
<math>
<math>
  \begin{array}{lll}
  \begin{array}{lll}
  \displaystyle \min_{u} && \frac{1}{2}\int_0^T \left( x_0(t)^2 + x_1(t)^2 + u(t)^2 \right) \\
  \displaystyle \min_{u, t_\mathrm{f}} && \frac{1}{t_\mathrm{f}} \int_0^{t_\mathrm{f}} \left( 2 u_1^2(t) + u_2^2(t) \right) \mathrm{d}t + \mu \, t_\mathrm{f} \\
  \text{subject to} \\
  \text{subject to} \\
\quad \dot{x_0}(t) & = & x_2(t),\\
\quad \dot{x_1}(t) & = & v_1(t),\\
\quad \dot{x_1}(t) & = & x_3(t), \\
\quad \dot{v_1}(t) & = & \frac{1}{m} \left( u_1 \cos \alpha - u_2 \sin \alpha \right), \\
\quad \dot{x_2}(t) & = & - \frac{k_1 + k_2}{m_1} \cdot x_0 + \frac{k_2}{m_1} \cdot x_1 + \frac{1}{m_1} \sin\left(\frac{2\pi}{T} \cdot t\right), \\
\quad \dot{x_2}(t) & = & v_2(t), \\
\quad \dot{x_3}(t) & = & \frac{k_2}{m_2} x_0(t) - \frac{k_2}{m_2} x_1(t) - \frac{c(1-u)}{m_2} x_3(t), \\
\quad \dot{v_2}(t) & = & \frac{1}{m} \left( -\mathrm{mg} + u_1 \sin \alpha + u_2 \cos \alpha \right), \\
\quad x_1(0) &=& 0, \\
\quad \dot{\alpha} & = & v_\alpha, \\
\quad x_2(0) &=& 0, \\
\quad \dot{v}_\alpha & = & \frac{r}{J} u_1, \\
\quad u(t) & \in & [-1, 1] \ \quad \forall t \in [0,T]
\quad x(0) &=& (0, 0, 0, 0, 0, 0)^T, \\
\quad x(t_\mathrm{f}) &=& (1, 0, 0, 0, 0, 0)^T, \\
\quad u_1(t) & \in & [-5, 5] \ & \forall t \in [0,t_\mathrm{f}], \\
\quad u_2(t) & \in & [0, 17] \ & \forall t \in [0,t_\mathrm{f}], \\
\quad \alpha(t) & \in & [-30, 30] \ & \forall t \in [0,t_\mathrm{f}]
   \end{array}
   \end{array}
</math>
</math>
Line 34: Line 40:
{| border="1" align="center" cellpadding="5" cellspacing="0"
{| border="1" align="center" cellpadding="5" cellspacing="0"
|- bgcolor=#c7c7c7
|- bgcolor=#c7c7c7
! Symbol !! Value !! Description
! Symbol !! Value
|-
|-
| align=center | <math>m_1</math> || align=right | 100 <math>\mathrm{kg}</math> || First mass directly affected by <math>F( t )</math>
| align=center | <math>m</math> || align=right | 2.2 <math>\mathrm{kg}</math>  
|-  
|-  
| align=center | <math>m_2</math> || align=right | 2 <math>\mathrm{kg}</math>||  Second mass influenced by damping control
| align=center | <math>J</math> || align=right | 0.05 <math>\mathrm{kg \cdot m^2}</math>
|-
|-
| align=center | <math>k_1</math> || align=right | 100 <math>\mathrm{N/m}</math>|| Spring connecting first mass to reference
| align=center | <math>r</math> || align=right | 0.2 <math>\mathrm{m}</math>
|-
| align=center | <math>k_2</math> || align=right | 3 <math>\mathrm{N/m}</math>|| Coupling spring between the two masses
|-
| align=center | <math>c</math> || align=right | 0.5 <math>\mathrm{Ns/m}</math>|| Damping affecting second mass
|-  
|-  
| align=center | <math>T</math> || align=right | <math>2 \pi</math> || Duration of the motion
| align=center | <math>\mathrm{mg}</math> || align=right | 4 <math>\mathrm{N}</math>
|-  
|-  
| align=center | <math>u</math> || align=right | - || Modulates the damping of the second mass
| align=center | <math>\mu</math> || align=right | 1
|}
|}
The weight <math>\mu</math> balances control effort and transition time.


== Reference Solutions ==
== Reference Solutions ==
Line 55: Line 59:
Here is one local solution to the above control problem.
Here is one local solution to the above control problem.


<gallery caption="Reference solution plots" widths="180px" heights="140px" perrow="1">
<gallery caption="Reference solution plots" widths="500px" heights="300px" perrow="1">
  Image:Double_Oscillator.png| States and discretized control for a local optimum.
  Image:Ducted_Fan.png| States and discretized control for a local optimum.
</gallery>
</gallery>


Line 63: Line 67:


== References ==
== References ==
<span id="OCPjl">[1]</span> Caillau, J.-B., Cots, O., Gergaud, J., & Martinon, P. OptimalControlProblems.jl: a collection of optimal control problems with ODE's in Julia. https://github.com/control-toolbox/OptimalControlProblems.jl/blob/main/ext/Descriptions/double_oscillator.md<br>
<span id="OCPjl">[1]</span> Caillau, J.-B., Cots, O., Gergaud, J., & Martinon, P. OptimalControlProblems.jl: a collection of optimal control problems with ODE's in Julia. https://github.com/control-toolbox/OptimalControlProblems.jl/blob/main/ext/Descriptions/ducted_fan.md<br>




[[Category:MIOCP]]
[[Category:MIOCP]]
[[Category:ODE model]]
[[Category:ODE model]]

Latest revision as of 10:43, 28 November 2025

Ducted Fan
State dimension: 1
Differential states: 6
Discrete control functions: 3


The Ducted Fan problem is a classical nonlinear benchmark in optimal control with multiple input and state constraints. This description is taken from [1].

It models the planar motion of a ducted fan aircraft, described by its horizontal and vertical positions (x1,x2) , the angle α with respect to the vertical, and their velocities (v1,v2,vα) . The inputs are the body-fixed thrust components (u1,u2) , generated by moving flaps at the end of the duct.

The objective is to steer the fan from the origin to a horizontal position of 1m at altitude 0, with zero final velocities and attitude, in a free final time tf, while minimising a trade-off between control effort and transition time.

Mathematical formulation

We summarize the states as x:=(x1,v1,x2,v2,α,vα).

minu,tf1tf0tf(2u12(t)+u22(t))dt+μtfsubject tox1˙(t)=v1(t),v1˙(t)=1m(u1cosαu2sinα),x2˙(t)=v2(t),v2˙(t)=1m(mg+u1sinα+u2cosα),α˙=vα,v˙α=rJu1,x(0)=(0,0,0,0,0,0)T,x(tf)=(1,0,0,0,0,0)T,u1(t)[5,5] t[0,tf],u2(t)[0,17] t[0,tf],α(t)[30,30] t[0,tf]

Parameters

These fixed values are used within the model:

Symbol Value
m 2.2 kg
J 0.05 kgm2
r 0.2 m
mg 4 N
μ 1

The weight μ balances control effort and transition time.

Reference Solutions

Here is one local solution to the above control problem.

Miscellaneous and Further Reading

This formulation and a detailed description can be found in [1].

References

[1] Caillau, J.-B., Cots, O., Gergaud, J., & Martinon, P. OptimalControlProblems.jl: a collection of optimal control problems with ODE's in Julia. https://github.com/control-toolbox/OptimalControlProblems.jl/blob/main/ext/Descriptions/ducted_fan.md