| 查看: 911 | 回复: 0 | ||
[求助]
【求助 一个关于最优控制的matlab问题(新手,请大家多多帮助)
|
|
Sample Text 最速下降法求最优控制u的matlab算法,各位大侠能否把这个主循环补充一下,不知道怎么回事,运行不了 。是附件里文献的例子2,在第7页,多谢 %%%%%%%%%%%%%%%%%%%%%% for i = 1:max_iteration % 1) start with assumed control u and move forward [Tx,X] = ode45(@(t,x) stateEq(t,x,u,Tu), [t0 tf], ... initx, options); % 2) Move backward to get the trajectory of costates x1 = X(:,1); x2 = X(:,2); [Tp,P] = ode45(@(t,p) costateEq(t,p,u,Tu,x1,x2,Tx), ... [tf t0], initp, options); p1 = P(:,1); % Important: costate is stored in reverse order. The dimension of % costates may also different from dimension of states % Use interploate to make sure x and p is aligned along the time axis p1 = interp1(Tp,p1,Tx); % Calculate deltaH with x1(t), x2(t), p1(t), p2(t) dH = pH(x1,p1,Tx,u,Tu); H_Norm = dH'*dH; % Calculate the cost function J(i,1) = tf*(((x1')*x1 + (x2')*x2)/length(Tx) + ... 0.1*(u*u')/length(Tu)); % if dH/du < epslon, exit if H_Norm < eps % Display final cost J(i,1) break; else % adjust control for next iteration u_old = u; u = AdjControl(dH,Tx,u_old,Tu,step); end; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % State equations function dx = stateEq(t,x,u,Tu) dx = zeros(2,1); u = interp1(Tu,u,t); % Interploate the control at time t dx(1) = -2*(x(1) + 0.25) + (x(2) + 0.5)*exp(25*x(1)/(x(1)+2)) ... - (x(1) + 0.25).*u; dx(2) = 0.5 - x(2) -(x(2) + 0.5)*exp(25*x(1)/(x(1)+2)); %%%%%%%%%%%%%%%%%%%%%%% % Costate equations function dp = costateEq(t,p,u,Tu,x1,x2,xt) dp = zeros(2,1); x1 = interp1(xt,x1,t); % Interploate the state varialbes x2 = interp1(xt,x2,t); u = interp1(Tu,u,t); % Interploate the control dp(1) = p(1).*(u + exp((25*x1)/(x1 + 2)).*((25*x1)/(x1 + 2)^2 - ... 25/(x1 + 2))*(x2 + 1/2) + 2) - ... 2*x1 - p(2).*exp((25*x1)/(x1 + 2))*((25*x1)/(x1 + 2)^2 - ... 25/(x1 + 2))*(x2 + 1/2); dp(2) = p(2).*(exp((25*x1)/(x1 + 2)) + 1) - ... p(1).*exp((25*x1)/(x1 + 2)) - 2*x2; %%%%%%%%%%%%%%%%%%%%%%%%%%% % Partial derivative of H with respect to u function dH = pH(x1,p1,tx,u,Tu) % interploate the control u = interp1(Tu,u,tx); R = 0.1; dH = 2*R*u - p1.*(x1 + 0.25); %%%%%%%%%%%%%%%%%%%%%%%%% % Adjust the control function u_new = AdjControl(pH,tx,u,tu,step) % interploate dH/du pH = interp1(tx,pH,tu); u_new = u - step*pH; %%%%%%%%%%%%%%%% |
» 本帖附件资源列表
-
欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com - 附件 1 : SolvingoptimalcontrolproblemswithMATLAB.pdf
2013-09-01 16:16:28, 1.95 M
» 猜你喜欢
假如你的研究生提出不合理要求
已经有12人回复
实验室接单子
已经有7人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
找到一些相关的精华帖子,希望有用哦~
关于Matlab求孔隙率(找最佳阈值)
已经有6人回复
MATLAB将三维图和其中一个面的等高线画出来的问题,谢谢了。
已经有7人回复
求助一个matlab关于分类讨论的问题
已经有9人回复
请教大家一个反卷积的问题~~帮忙推导或者matlab编程计算~~
已经有5人回复
一篇关于最优控制的matlab tutorial
已经有215人回复
菜鸟求助~matlab怎么样让一个1xn的向量中的每个元素是个矩阵?
已经有11人回复
求助:能不能帮忙写一个用matlab求一个函数的傅里叶变换的程序
已经有16人回复
关于matlab 2010b 的一个小问题
已经有7人回复
【求助】matlab求解一个简单的积分(急!!!)
已经有7人回复
【求助】向各位大侠求助matlab求解微分方程组遇到的一个问题
已经有21人回复
【求助】一个matlab窗口占25%CPU,如何提高?
已经有11人回复
【求助】请教一个matlab程序,谢谢帮忙!!
已经有15人回复
【求助】如何在MATLAB中作出一个随机平面,急急急!!!
已经有3人回复
【求助】matlab中如何将程序的结果输出到一个文件中
已经有11人回复
【求助】MATLAB多个mat中 数据画图问题
已经有7人回复
【求助】matlab 二次规划的优化的问题
已经有4人回复
【求助】问一个关于matlab中legend的问题
已经有11人回复
【求助】matlab中保存计算数据的问题
已经有8人回复
科研从小木虫开始,人人为我,我为人人












回复此楼
点击这里搜索更多相关资源