RHouLong~? 2020-02-24 16:26 采纳率: 0%
浏览 482

MALTAB中基于动力学模型的主动转向控制代码如何改正?

大家好,菜鸟最近在看龚建伟教授的《无人驾驶车辆模型检测》,可是看到第五章基于动力学模型的主动转向控制那里的源代码最后的有效集法'active set'从quadprog里删除了,请问应该怎么改?

%% 开始求解过程
options = optimset('Algorithm','active-set');
x_start=zeros(Nc+1,1);%加入一个起始点
[X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options);
fprintf('exitflag=%d\n',exitflag);
fprintf('H=%4.2f\n',H(1,1));
fprintf('f=%4.2f\n',f(1,1));

  • 写回答

2条回答 默认 最新

  • 犯困嫌疑人orz 2020-04-10 12:32
    关注

    1.改为内点法求规划问题
    2.如果在某一时刻由于计算结果的问题导致运行终止,将原来的代码修改一下,用if isempty命令判断就算结果X是否为空,如果是,则保留上一次计算结果,如果不是,则正常输出,代码如下:
    % options = optimset('Algorithm','active-set');
    options = optimset('Algorithm','interior-point-convex'); %内点法
    x_start=zeros(Nc+1,1);%加入一个起始点
    [X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options);
    if isempty(X)
    U(1)=kesi(7,1);
    sys= U;
    toc
    else
    %% 计算输出
    u_piao=X(1);%得到控制增量
    U(1)=kesi(7,1)+u_piao;%当前时刻的控制量为上一刻时刻控制+控制增量
    %U(2)=Yita_ref(2);%输出dphi_ref
    sys= U;
    toc
    % End of mdlOutputs.
    end
    fprintf('exitflag=%d\n',exitflag);
    fprintf('H=%4.2f\n',H(1,1));
    fprintf('f=%4.2f\n',f(1,1));

    
    
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler