nonlcon with 2 possible values

1 visualización (últimos 30 días)
Alessia De Iuliis
Alessia De Iuliis el 4 de Mzo. de 2021
Respondida: Nipun el 7 de Jun. de 2024
I am using fmincon to optimize a space trajectory. My controls are the thrust three directions (radial(Tr), tangential(Tt) and normal(Tn)).
During my trajectory, I want the thrust to be either equal to the maximum possible value (Tmax) available or null. To express this constrain I want to use
sqrt(Tr^2+Tt^2+Tn^2)
ceq=[ or
sqrtT(r^2+Tt^2+Tn^2)-Tmax
How can I express this nonlinear constrain in my script? is it possibile to write the constrain with an or operator?

Respuestas (1)

Nipun
Nipun el 7 de Jun. de 2024
Hi Alessia,
I understand that you want to apply a nonlinear constraint to your optimization problem in MATLAB using fmincon, where the thrust can either be zero or the maximum possible value (Tmax). Here's how you can define this constraint:
function [c, ceq] = thrustConstraint(x)
Tmax = ...; % Define your Tmax value here
Tr = x(1); % Radial thrust
Tt = x(2); % Tangential thrust
Tn = x(3); % Normal thrust
thrust = sqrt(Tr^2 + Tt^2 + Tn^2);
% Nonlinear equality constraints
ceq = [thrust; thrust - Tmax];
% No inequality constraints
c = [];
end
When using fmincon, specify this function as the nonlinear constraint function.
Hope this helps.
Regards,
Nipun

Categorías

Más información sobre Nonlinear Optimization en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by