本文主要基于以下参考:
[1] John T. Betts. Survey of Numerical Methods for Trajectory Optimization.
[2] Anil V. Rao. A Survey of Numerical Methods For Optimal Control.
[3] John T. Betts. Practical Methods for Optimal Control and Estimation Using Nonlinear Programming 2nd.
[4] A E. Bryson. Applied Optimal Control.
[5] KIRK. Optimal Control Theory: An Introduction.
[6] Matthew Kelly. An Introduction to Trajectory Optimization: How to Do Your Own Direct Collocation.
理论部分
本部分涉及到的内容为[4]中的3.6节部分,考虑最优控制问题:
前面介绍的最优控制问题动态方程右端函数由 f 定义且整个过程中不发生变化,本节所要介绍的最优控制问题考虑右端函数变化的情况,典型的例子比如运载火箭一级分离后,动力学方程发生变化等等。
设在时间 t<t1 内:
其中 t1 由下式确定:
在时间 t>t1 内:
其中,式(3)与上节类似,本质上是一个内点约束,因此上节推导得到的必要条件在经过修改后仍然适用:
其中,
代码实现
下面对不连续水流问题进行介绍,上节介绍了水流速度建模为:
并对具体的水流形式
进行了求解,本节考虑下面这种水流问题:
即水流以 h 为分界线,两边的速度不同,这就导致了右端函数 f 的不连续性
在这个问题中,我们寻找从 x=y=0 到达x=ah,y=(1+b)h的最短时间路径。
由于求解这个问题需要用到多点边值问题,我们首先通过多点边值问题来求解前面求解过的一个问题,以便更清晰的演示采用的方法。
下面这个问题在前面第8部分介绍过:
最优控制问题(Interior point constraint problem):
满足边界约束:
内点约束:
之前我们解决这个问题时,采用的方法是解析方法,下面采用bvp来进行求解。
%% solve MBVP
solinit = bvpinit([linspace(0, 0.75) linspace(0.75,1)], [1 -1]);
%solinit.x = [linspace(0, 0.75) linspace(0.75,1)];
%solinit.y = [linspace(1,0.9) linspace(0.9,0.75);linspace(1, -0.5) linspace(1.5, 1)];
tol = 1E-6;
options = bvpset('RelTol',tol,'AbsTol',[tol tol],'Nmax', 2000);
sol = bvp4c(@MBVPOde, @MBVPbc,solinit);
time = sol.x;
state = sol.y(1,:);
costate = sol.y(2,:);
control = -0.5*costate;
%% plotting
% state
figure(1); clf
plot(time, state,'r-', 'LineWidth',2)
legend('state seg1','state seg2','Location','NorthEast')
grid on;
xlabel('Time');ylabel('States')
% costate
figure(2); clf
plot(time, costate,'r-','LineWidth',2)
hold on;
grid on;
xlabel('Time');ylabel('Costates')
% control
figure(3); clf
plot(time, control,'r-', 'LineWidth',2)
hold on;
grid on;
xlabel('Time');ylabel('Control')
function dydt=MBVPOde(t, y, k)
% y: [x, lambda]
u = -0.5*y(2);
dydt = [u; -2*y(1)];
end
function res=MBVPbc(yleft, yright)
ya = yleft(:,1);
yb = yright(:,end);
ymidL = yleft(:, 2);
ymidR = yright(:,1);
res = [ya(1)-1;
yb(1)-0.75;
ymidL(1)-0.9;
ymidR(1)-0.9;
];
end
下面我们再回到问题:
重新对上述问题进行整理叙述:
满足约束:
其中,
因此,该系统的运动方程便被分为了两部分,以下分别进行推导,根据前面已经得到过的对一般的航体航行问题的最优必要条件如下:
根据本题目中的具体形式,我们分别推导可以得到以下式子:
上式要求 y<h ,
上式要求 y>h 。
可以得到:
同样应用公式
到本问题中可以得到:
由最优控制条件可得:
根据给定的相关参数 ε,a,b ,即可求解得到上述方程的解。
评论(0)
您还未登录,请登录后发表或查看评论