Nonlinear constraint on optimization using ODE - system state involved
Show older comments
Hello,
I need to incorporate a nonlinear constraint on my optimization problem but there is a ODE involved. The constraint involves a system state so that is why I am having some difficulty in incorporating it. I do not know if it can be done.
It is easy to write some constraint that depends only on the paramaters themselves or values that are available at t = 0 (e.g., initial conditions) but I do not know a priori the values of the states. So, adapting one MATLAB example from https://nl.mathworks.com/help/matlab/ref/ode23s.html let us say I am trying to optimize the two parameters in the vector p inside that ODE but some some reason I want to limit y(2) to a maximum value during optimization. Can someone help on this generic example?
tspan = [0 5];
y0 = [0 0.01];
function SSE = fobj(p,tspan,y0)
[t,y] = ode23s(@(t,y) odefcn(t,y,p), tspan, y0);
...
SSE = sum((y - yexp).^2); % let us say we have some experimental data to define a sum of squared errors
end
function dydt = ode_example(t,y,p)
dydt = zeros(2,1);
dydt(1) = y(2);
dydt(2) = p(1)*t.*y(1)+p(2);
end
function [c] = nlincon(y,p,max_value)
c = y(2)-max_value; % ?? how do I access the value of y(2) at all times outside the ODE function itself?
end
Accepted Answer
More Answers (0)
Categories
Find more on Get Started with Optimization Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!