how to sove boundary value problem when i have initial conditions of the states and final conditions of Lagrange multipliers?

1 次查看(过去 30 天)
hello, i have the following optimal control problem to solve:
where x1 and x2 are states and lambbda_1 and lambda_2 are lagrange multipliers and the equations where obtained from the cost minimization. ihave the conditions for the states at the begining and the lambdas at the end. is there a way to solve it as it is in matlab or i have to find more conditions?
thank you very much

回答(1 个)

SAI SRUJAN
SAI SRUJAN 2024-1-22
Hi Tomer,
I understand that you are trying to solve a optimal control problem, where you have the initial and final conditions.
To solve this in MATLAB, you might use functions such as 'bvp4c' or 'bvp5c', which are designed to solve boundary value problems. You will need to define the differential equations for both the states and the costates, as well as the boundary conditions. The boundary conditions will include the given initial conditions for the states and the final conditions.
You can follow the code template below to proceed further,
function main
% Initial conditions for states
x10 = -5; x20 = -5;
% Final conditions for Lagrange multipliers
lambda1f = 0; lambda2f = 0;
% Make an initial guess for the solution
solinit = bvpinit(linspace(0, 1, 10), @guess);
sol = bvp4c(@odefun, @bcfun, solinit);
end
function dydt = odefun(t, y)
x1 = y(1);
x2 = y(2);
lambda1 = y(3);
lambda2 = y(4);
% System of differential equations
dx1dt = x2;
dx2dt = -x1 + 1.4*x2 - 0.14*x2^3 - 8*lambda2;
dlambda1dt = lambda2 - 2*x1;
dlambda2dt = -lambda1 - 1.4*lambda2 + 3.014*lambda2*x2^2;
% Combine them into a column vector
dydt = [dx1dt; dx2dt; dlambda1dt; dlambda2dt];
end
function res = bcfun(ya, yb)
% Boundary conditions
res = [ya(1) + 5; % x1(0) = -5
ya(2) + 5; % x2(0) = -5
yb(3); % lambda1(T) = 0
yb(4)]; % lambda2(T) = 0
end
function g = guess(t)
% Initial guess for the solution
g = [-5; -5; 0; 0];
end
Modify the 'odefun', 'bcfun', and 'guess' functions as per the conditions. For a comprehensive understanding of the 'bvp4c' function in MATLAB, please refer to the following documentation.
I hope this helps!

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by