# Hello all, how I can solve ODE simultaneously with fmincon?

10 views (last 30 days)
Muna Shehan on 26 Jun 2016
Commented: Alan Weiss on 3 Mar 2021
I have a system subject to ordinary differential equations (ODE) which are the linear equality constraints and at the same time i want to minimize the objective function which depends on the parameters which are the solution of the (ODE). I try to follow MathWorks Support Team answer
The problem I have a confuse to follow MathWorks Support Team answer ; I do not know if I have to solve ODE first then I send the ODE solution to the objective function via fmincon as a passing parameters OR I have to solve the ODE inside the objective function. Thanks
Alan Weiss on 3 Mar 2021
For example,
function [c,ceq] = nonlcon(x,extraParams)
ceq = [];
sol = ode45(@odefun,tspan,y0); % You can include tspan or y0 in extraParams
y = deval(sol,extraParams.mytimes); % Assume you want the values at some times
% Figure out the constraint value, for example,
c = y - 25; % You want y to be less than 25
end
You would call this as
nlcon = @(x)nonlcon(x,extraParams);
where extraParams is a structure with the extra parameters, if any, that you want to pass to the nonlinear constraint function.
Alan Weiss
MATLAB mathematical toolbox documentation